tôi đã và đang làm một số thử nghiệm trên lớp ngẫu nhiên và tôi đã sử dụng đoạn mã sau:Làm thế nào là ngẫu nhiên 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;
}
}
tôi liên tục thay đổi giới hạn rnd max (tức là 5000000) và tôi đã thay đổi số lần lặp lại và tôi đã nhận như sau kết quả:
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.
Tại sao tôi nhận được số trung bình này, tức là 10 lần tôi đã kiểm tra cho mỗi giá trị, 80% thời gian tôi nhận được trong phạm vi trung bình này. Tôi không nghĩ chúng ta có thể gọi nó là ngẫu nhiên.
Tôi có thể làm gì để có được số ngẫu nhiên.
Nó được gọi là giả ngẫu nhiên vì một lý do. –
ngẫu nhiên không có nghĩa là 'duy nhất'. – nos
Chúc mừng bạn đã khám phá ra nghịch lý sinh nhật. (http://en.wikipedia.org/wiki/Birthday_problem) – kennytm