在寻找生成真正随机数的最佳尝试时,我偶然发现了这个代码示例.
在这个片段上寻找意见.
using System;
using System.Security.Cryptography;
private static int NextInt(int min, int max)
{
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
byte[] buffer = new byte[4];
rng.GetBytes(buffer);
int result = BitConverter.ToInt32(buffer, 0);
return new Random(result).Next(min, max);
}
Run Code Online (Sandbox Code Playgroud)
资料来源:http://www.vcskicks.com/code-snippet/rng-int.php
这比使用滴答计数种子更受欢迎,例如:
Random rand = new Random(Environment.TickCount);
rand.Next(min, max);
Run Code Online (Sandbox Code Playgroud)
注意:
我不是在寻找第三方随机数据提供者,例如Random.org,因为这种依赖对应用程序来说是不现实的.