c# 如何快速生成随机整数?
默认的 Random 类构造函数使用时间作为种子,会生成许多重复的随机数,还有更快的方案吗(随机数可以出现重复)?
我有一种方法可能没有RNGCryptoServiceProvider
方法的精准,但是在一般情况下可以通过这正方法生成很多随机数,性能比RNGCryptoServiceProvider
类下的方法要少用一些资源,也比每一次生成一个判断一次要节约资源,能满足一般要求。
public static int[] RandomArray(int minVal, int maxVal)
{
System.Random rnd = new System.Random();
byte[] keys = new byte[maxVal + 1];//创建一个byte数组
rnd.NextBytes(keys);//为byte数组加入随机数字
int[] items = new int[maxVal + 1];
for (int i = minVal; i < maxVal + 1; i++)//创建一个顺序整数数组
{
items[i] = i;
}
Array.Sort(keys, items);//使用随机byte数组打乱顺序整数数组
int[] result = new int[maxVal + 1];
return result;
}
希望能帮到你。
不久前用到过Random函数,可以参考下。
也翻译了篇文章: http://raylei.cn/index.php/ar...
C#中生成的随机数为什么不随机?