【发布时间】:2013-05-13 01:31:05
【问题描述】:
我在 google 上搜索 RNGCryptoServiceProvider 并提供有关如何限制 Max 和 Min 之间范围的示例,并且仍然获得均匀分布。在我使用模运算符之前,但有时我会得到奇怪的值(高于最大值)...... 无论如何,每次调用该方法时,此代码(归功于未知)使用来自 RNGCCryptoServiceProvider 的新种子随机播种。你们有什么感想?
public static int GetRandom(int min, int max)
{
byte[] b = new byte[sizeof(int)];
new System.Security.Cryptography.RNGCryptoServiceProvider().GetBytes(b);
int i = BitConverter.ToInt32(b, 0);
Random r = new Random(i);
return r.Next(min, max);
}
【问题讨论】:
-
每次调用 rng 时都重新播种是不好的做法。
-
好的,那我如何只从 rng 启动一个种子?
标签: c# random cryptography rngcryptoserviceprovider