我需要在 C# 中生成随机整数。我正在使用时钟时间来设置种子。但是,由于 rnd.Next() 函数可能需要不到一毫秒,因此如果必须生成整数列表,这将不起作用。
for( int i=0; i<5; i++) {
int max_val = 10; // max value
var rnd = new Random(DateTime.Now.Millisecond);
int randind = rnd.Next(0, max_val);
Console.WriteLine(randind);
}
Run Code Online (Sandbox Code Playgroud)
输出:
1 5 5 5 5
如何在不增加丑陋睡眠的情况下以干净的方式随机化种子?
Random在循环外创建您的对象并且不提供种子参数 - 将为您挑选一个。通过将它从循环中取出, rnd.Next() 无论如何都会给你一个随机序列。
var rnd = new Random();
for( int i=0; i<5; i++) {
int max_val = 10; // max value
int randind = rnd.Next(0, max_val);
Console.WriteLine(randind);
}
Run Code Online (Sandbox Code Playgroud)
该Guid对象每次都会保证不同的结果。你可以这样做:
... new Random(Guid.NewGuid().GetHashCode())
Run Code Online (Sandbox Code Playgroud)