2012-01-15 6 views
21

Próbuję wygenerować tablicę losowych wartości int, gdzie losowe wartości są przyjmowane między min. A maks.Tworzenie tablicy losowych int

Dotychczas wymyśliłem tego kodu:

int Min = 0; 
int Max = 20; 

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

ale nie jest jeszcze w pełni funkcjonalny. Myślę, że być może brakuje mi tylko 1 linii lub czegoś. Czy ktoś może mi pomóc, pchając mnie we właściwym kierunku?

+2

Nie przypisujesz wartości do swojej tablicy w każdej iteracji. –

Odpowiedz

30

Nigdy nie przypisujesz wartości wewnątrz tablicy test2. Zostały uznane za to, ale wszystkie wartości będą 0. Oto jak można przypisać liczbę losową w określonym przedziale dla każdego elementu tablicy:

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); 
} 

alternatywnie można użyć 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

ten pierwszy dał mi jeszcze więcej błędów, a do tej pory moja znajomość C# wynosi około 2 tygodni hehe. drugi działa jak urok. thanx do tego – Dante1986

0

Musisz przypisać wynik random.next do indeksu bieżącego twojej tablicy w pętli

+2

Nie możesz dodać do tablicy, to jest lista .. i jeśli zrobiłeś to w pętli foreach, kolekcja byłaby modyfikowana podczas iteracji. –

+0

Przepraszam, ale nadal jest to zła odpowiedź i zła: używanie 'foreach' jest dostęp do elementów tablicy, nie można ich zaludnić w ten sposób –

+0

Ahh Całkowicie zignorowałem pętlę foreach w pierwotnym pytaniu. – stephen776