我如何创建一个2位随机数与RNGCryptoServiceProvider类
本文关键字:2位 随机数 一个 RNGCryptoServiceProvider 何创建 创建 | 更新日期: 2023-09-27 18:16:39
我试图得到一个随机数,但它有一定数量的数字,我不能减少。我怎样才能用这种安全的方法得到一个2位数的随机数呢?
{ Console.WriteLine("{0}",GetRandom());Console.ReadLine();
}
private static int GetRandom()
{
RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
{
byte[] randomNumber = new byte[4];
rng.GetBytes(randomNumber);
int value = BitConverter.ToInt32(randomNumber,0);
return value;
使用称为模运算符的%。RNGCryptoServiceProvider
产生的PRNG范围不同寻常,但其偏置比System.Random
小。
你的代码应该像这样:
private static int GetRandom(int min, max) {
using(System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider())
{
byte[] randomNumber = new byte[4];
rng.GetBytes(randomNumber);
int value = BitConverter.ToInt32(randomNumber,0);
return Math.Abs(value%max+min);
}
}
我已经使用了Math.Abs
,所以你只会得到正数,但你可以删除它