Я делал некоторые испытания на случайном классе, и я использовал следующий код:Насколько случайным является Random.Next()?
while (x++ <= 5000000)
{
y = rnd.Next(1, 5000000);
if (!data.Contains(y))
data.Add(y);
else
{
Console.WriteLine("Cycle {2}: Repetation found for number {0} after {1} iteration", y, x, i);
break;
}
}
я продолжал изменения предела RND максимального (т.е. 5000000), и я изменил число итераций, и я получил следующее результат:
1) if y = rnd.Next(1, 5000) : The average is between 80 to 110 iterations
2) if y = rnd.Next(1, 5000000) : The average is between 2000 to 4000 iterations
3) if y = rnd.Next(1, int.MaxValue) : The average is between 40,000 to 80,000 iterations.
Почему я получаю эти средние, то есть из 10 раз я проверил для каждого значения, 80% времени я получаю в этом среднем диапазоне. Я не думаю, что мы можем назвать его близким к случайному.
Что я могу сделать, чтобы получить случайное число.
Это называется случайным случайным образом. –
случайный не означает «уникальный». – nos
Поздравляем вас за открытие парадоксального дня рождения. (http://en.wikipedia.org/wiki/Birthday_problem) – kennytm