2012-01-15 11 views
21

Lo que intento hacer es generar una matriz de valores int aleatorios, donde los valores aleatorios se toman entre un mínimo y un máximo.Hacer una matriz de entradas aleatorias

Hasta el momento se me ocurrió con este código:

int Min = 0; 
int Max = 20; 

int[] test2 = new int[5]; 
Random randNum = new Random(); 
foreach (int value in test2) 
{ 
    randNum.Next(Min, Max); 
} 

Pero no su trabajo completamente todavía. Creo que me podría estar perdiendo solo 1 línea o algo así. ¿Alguien puede ayudarme empujándome en la dirección correcta?

+2

No está asignando realmente un valor a su matriz en cada iteración. –

Respuesta

30

Nunca se asignan los valores dentro de la matriz test2. Usted ha declarado, pero todos los valores será 0. Aquí es cómo se puede asignar un número entero aleatorio en el intervalo especificado para cada elemento de la matriz:

int Min = 0; 
int Max = 20; 

// this declares an integer array with 5 elements 
// and initializes all of them to their default value 
// which is zero 
int[] test2 = new int[5]; 

Random randNum = new Random(); 
for (int i = 0; i < test2.Length; i++) 
{ 
    test2[i] = randNum.Next(Min, Max); 
} 

otra posibilidad es utilizar LINQ:

int Min = 0; 
int Max = 20; 
Random randNum = new Random(); 
int[] test2 = Enumerable 
    .Repeat(0, 5) 
    .Select(i => randNum.Next(Min, Max)) 
    .ToArray(); 
+0

esa primera me dio aún más errores, y hasta ahora mi conocimiento de C# solo es de aproximadamente 2 semanas atrás jeje. el segundo funciona como un encanto. gracias a eso – Dante1986

0

Necesita asignar el resultado random.next al índice actual de su matriz dentro del ciclo

+2

No se puede agregar a una matriz, eso es una lista ... y si lo hiciste en un bucle 'foreach', la colección se modificaría al iterar. –

+0

Lo sentimos, pero sigue siendo la respuesta incorrecta y mala: usar 'foreach' es acceder a los elementos de una matriz, no puedes poblarlos de esa manera –

+0

Ahh ignoré totalmente el ciclo foreach en la pregunta original. – stephen776

Cuestiones relacionadas