Выбор случайных элементов из массива [дубликат]

205
28 августа 2018, 02:20

На данный вопрос уже ответили:

  • C# случайные числа 1 ответ

Код ниже по идее должен 20 раз выбрать случайное число из массива, но получается почему-то 20 раз подряд одно и то же число.

int[] mas = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int count = 0;
do
{
Random rnd = new Random();
int nm = mas[rnd.Next(0, 8)];
Console.WriteLine(nm);
count++;
}
while (count < 20);
Console.ReadKey();
Answer 1

У вас объекты класса Random создаются с одинаковым сидом, поэтому и метод Next() будет возвращать одни и те же цифры. Создайте один экземпляр Random, а в цикле вызывайте метод Next().

Если вы используете счётчик для цикла и в теле цикла нет условий для этого счётчика, то лучше использовать цикл for вместо do while.

int[] mas = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
Random rnd = new Random();
for (int count = 0; count < 20; count++)
{
    int nm = mas[rnd.Next(0, 8)];
    Console.Write(nm + " ");
}
Console.ReadKey();

READ ALSO
Как правильно &ldquo;готовить&rdquo; авторизацию в SPA?

Как правильно “готовить” авторизацию в SPA?

Цель такая: написать бэкенд ASPNet Core MVC* SPA для работы с ReactJS и дальнейшей возможностью переиспользовать существующий API для создания, скажем,...

190
Сравнение даты, полученной из json

Сравнение даты, полученной из json

Сервер отдаёт дату вот в таком формате: 2015-04-24T07:00:51ZМне нужно узнать, не старше ли эта дата, например, трёх дней

214
Как отсортировать точки

Как отсортировать точки

Я хочу сделать так, чтобы можно было отсортировать двумерные точкиТо есть объекты, у которых есть 2 числовых значения

185
c# асинхронное выполнение методов

c# асинхронное выполнение методов

Мне нужно постоянно пинговать около 400 машин и при это м чтобы другой функционал программы работалПишу так :

190