今天用C#语言需要用到Random类生成随机数,但遇到了一个奇怪的问题,每次生成的随机数都完全一样。原始的代码类似于这样:
for(var tmp in Container)
{
Random rand = new Random();
for(int i = 0; i < SomeNumber; i++)
{
int RandNumber = rand.next();
}
}
遇到的问题就是每次生成的RandNumber都是完全一样的,网上找了一下说是因为代码执行太快了,导致每次Random类的种子都是一样的,所以生成的结果也是一样的。于是找了一段随机生成种子的代码:
static int GetRandomSeed()
{
byte[] bytes = new byte[4];
System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider();
rng.GetBytes(bytes);
return BitConverter.ToInt32(bytes, 0);
}
然后把Random类初始化的代码改成下面这样:
Random rand = new Random(GetRandomSeed());
问题就解决了。<img alt="大笑" src="http://static.blog.csdn.net/xheditor/xheditor_emot/default/laugh.gif" />