通常情况下,很多人喜欢用一下的方式产生随机数,然后得到的随机数都是一样的,代码如下。
StringBuilder str = new System.Text.StringBuilder();
for (int i = 0; i < 600; i++) {
str.AppendLine((new Random().NextDouble()*100).ToString());
}
后来发现稍微改一下,就可以实现真正的随机
Random rd = new Random();
StringBuilder str = new System.Text.StringBuilder();
for (int i = 0; i < 600; i++) {
str.AppendLine((rd.NextDouble()*100).ToString());
}
只有一点点的变化,就可以实现产生不同的随机数。
附上另外一种方法:
public static double GetRandom()
{
long tick = DateTime.Now.Ticks;
Random ran = new Random(GetRandomSeed());
return ran.NextDouble();
}
private 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 rd = new Random();
StringBuilder str = new System.Text.StringBuilder();
for (int i = 0; i < 600; i++) {
str.AppendLine((rd.NextDouble()*100).ToString());
}
这种方式比较好。