我需要在C#中生成随机int。我正在使用时钟时间设置seend。但是,由于rnd.Next()函数可能需要不到一毫秒,如果必须生成一个int列表,这将不起作用。
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);
}
输出:
1
五
五
五
5
如何在不增加丑陋睡眠的情况下以干净的方式随机化种子?
答案 0 :(得分:3)
在循环外创建您的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);
}
答案 1 :(得分:1)
Guid对象每次都会保证不同的结果。你可以这样做:
... new Random(Guid.NewGuid()。GetHashCode())