Магия класса 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();