我想获得一个随机数,但它有一定数量的数字,我无法减少。如何使用这种安全方法实际获得只有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;
答案 0 :(得分:0)
使用%modulo operator。通过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
,因此您只能获得正数,但可以将其删除。