#c# #unity3d #probability-theory
#c# #массивы #Случайный #int
Вопрос:
То, что я пытаюсь, — это сгенерировать массив случайных значений int, где случайные значения берутся между min и max.
Пока я придумал этот код:
int Min = 0;
int Max = 20;
int[] test2 = new int[5];
Random randNum = new Random();
foreach (int value in test2)
{
randNum.Next(Min, Max);
}
Но он еще не полностью работает.
Я думаю, что мне может не хватать всего 1 строки или чего-то в этом роде.
Кто-нибудь может мне помочь, подтолкнув меня в правильном направлении?
Комментарии:
1. На самом деле вы не присваиваете значение своему массиву на каждой итерации.
Ответ №1:
Вы никогда не присваиваете значения внутри test2
массива. Вы объявили его, но все значения будут равны 0. Вот как вы могли бы назначить случайное целое число в указанном интервале для каждого элемента массива:
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);
}
в качестве альтернативы вы могли бы использовать LINQ:
int Min = 0;
int Max = 20;
Random randNum = new Random();
int[] test2 = Enumerable
.Repeat(0, 5)
.Select(i => randNum.Next(Min, Max))
.ToArray();
Комментарии:
1. этот первый дал мне еще больше ошибок, и пока мои знания о c # только около 2 недель назад, хе-хе. второй вариант работает как шарм. спасибо за это
Ответ №2:
Вам нужно присвоить результат random.next текущему индексу вашего массива в цикле
Комментарии:
1. Вы не можете добавлять в массив, это список .. и если бы вы сделали это в
foreach
цикле, коллекция была бы изменена во время итерации.2. Извините, но это все еще неправильный и плохой ответ: использование
foreach
is для доступа к элементам массива, вы не можете заполнить их таким образом3. Ах, я полностью проигнорировал цикл foreach в исходном вопросе.