今天,我的朋友有一个想法,使用生成的伪随机数多次设置伪随机数生成器的种子,以“使事情更随机化”。
C# 中的一个示例:
// Initiate one with a time-based seed
Random rand = new Random(milliseconds_since_unix_epoch());
// Then loop for a_number_of_times...
for (int i = 0; i < a_number_of_times; i++)
{
// ... to initiate with the next random number generated
rand = new Random(rand.Next());
}
// So is `rand` now really random?
assert(rand.Next() is really_random);
但我认为这可能会增加将重复种子用于伪随机数生成器的机会。
这会
- 让事情变得更加随机,
- 使其循环使用一定数量的种子,或
- 对随机性没有任何影响(即既不增加也不减少)?
有哪位伪随机数生成器方面的专家能给出一些详细的解释,以便我可以说服我的朋友吗?我很高兴看到答案解释了一些伪随机数生成器算法的更多细节。