Магия класса Random'a - C#
Формулировка задачи:
Делать было нечего, стал развлекаться с Random'ом,
1.Есть 3 цикла( Рандомлю до тех пор пока не вырандомится "1");
2.Еще 1 цикл() который считает количество попыток, пока в 3 циклах сразу не выпадет "1" с 2 попыток.
3.И цикл прогнать пункт 2 1000 раз
Когда есть пауза, все прекрасно.
Если пазу нет то рандомные числа начинают дико повторяться.
Часть вывода консоли без паузы:
Число попыток: 41
Число попыток: 41
Число попыток: 41
Число попыток: 41
Число попыток: 41
Число попыток: 134
Число попыток: 134
Число попыток: 134
Число попыток: 134
Число попыток: 134
Число попыток: 134
Число попыток: 134
Число попыток: 134
Число попыток: 134
Число попыток: 134
Число попыток: 134
Число попыток: 134
Число попыток: 134
Число попыток: 134
Число попыток: 134
Число попыток: 134
Число попыток: 134
Число попыток: 339
Число попыток: 339
Число попыток: 339
Число попыток: 339
Число попыток: 339
Часть вывода консоли c паузой:
Число попыток: 73
Число попыток: 31
Число попыток: 36
Число попыток: 1074
Число попыток: 733
Число попыток: 141
Число попыток: 337
Число попыток: 597
Число попыток: 76
Число попыток: 241
Число попыток: 337
Число попыток: 442
Число попыток: 8
Число попыток: 190
Число попыток: 89
Число попыток: 30
Число попыток: 54
Число попыток: 360
Число попыток: 86
Число попыток: 290
Число попыток: 447
Число попыток: 571
Число попыток: 221
Число попыток: 61
Число попыток: 147
Число попыток: 129
Число попыток: 147
Итак вопрос: Почему без паузы начинают повторяться числа? Метод Next класса Random не успевает обрабатывать и валит старые числа??
Листинг программы
- static void Main(string[] args)
- {
- int mainIndex = 0;
- for (int i = 0; i < 1000; i++)
- {
- int ind1 = 0;
- int ind2 = 0;
- int ind3 = 0;
- int mInd = 0;
- int rnumber = 0;
- Random r = new Random();
- while (ind1 != 2 || ind2 != 2 || ind3 != 2) //пока в 3 циклах сразу "1" не выпадет со 2 раза
- {
- ind1 = 0;
- ind2 = 0;
- ind3 = 0;
- do //пока не выпадет "1"
- {
- rnumber = r.Next(1, 6);
- ind1++;
- } while (rnumber != 1);
- rnumber = 0;
- do //пока не выпадет "1"
- {
- rnumber = r.Next(1, 6);
- ind2++;
- } while (rnumber != 1);
- rnumber = 0;
- do //пока не выпадет "1"
- {
- rnumber = r.Next(1, 6);
- ind3++;
- } while (rnumber != 1);
- mInd++;
- //Console.WriteLine("Вывод: " + ind1 + " " + ind2 + " " + ind3);
- }
- mainIndex += mInd;
- System.Threading.Thread.Sleep(15); //ПАУЗА
- Console.WriteLine("Число попыток: " + mInd);
- }
- Console.WriteLine("Среднее количество попыток: " + mainIndex / 1000);
- Console.ReadKey();
- }
Решение задачи: «Магия класса Random'a»
textual
Листинг программы
- Random r = new Random();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д