我如何创建一个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;

我如何创建一个2位随机数与RNGCryptoServiceProvider类

使用称为模运算符的%。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,所以你只会得到正数,但你可以删除它