如何在 C# 中随机化种子 [重复]
Posted
技术标签:
【中文标题】如何在 C# 中随机化种子 [重复]【英文标题】:How to randomize seed in C# [duplicate] 【发布时间】:2016-12-30 13:30:20 【问题描述】:我需要在 C# 中生成随机 int。我正在使用时钟时间来设置种子。但是,由于 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);
输出: 1 5 5 5 5
如何以一种干净的方式随机化种子而不增加难看的睡眠?
【问题讨论】:
【参考方案1】:在循环之外创建您的Random
object,并且不要提供种子参数——我们会为您挑选一个。通过将其从循环中取出,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);
【讨论】:
太棒了!非常感谢! 没问题!如果您对答案感到满意,您可以接受答案吗?【参考方案2】:Guid 对象每次都保证不同的结果。你可以这样做:
... 新随机(Guid.NewGuid().GetHashCode())
【讨论】:
guid 很昂贵,并且哈希码不能保证是唯一的,所以你最好忽略种子构造函数,而不是一遍又一遍地构造 Random 实例。以上是关于如何在 C# 中随机化种子 [重复]的主要内容,如果未能解决你的问题,请参考以下文章