(转)使用 .NET 的 RNGCryptoServiceProvider 生成随机数

1. [代码]一个简单的方法,但不够可靠     跳至 [1] [2] [全屏预览]

?


1

2

3

4

5

6

7

8

9

10

11

static void Main(string[] args)

{

    // code from DevCurry.com

    byte[] randomBytes = new byte[4];

    Random rando = new Random();

    rando.NextBytes(randomBytes);

    foreach (byte byteValue in randomBytes)

        Console.Write("{0, 4}", byteValue);

    Console.ReadLine();

}

2. [代码]可靠的方法

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

static void Main(string[] args)

{

    // code from DevCurry.com

    byte[] randomBytes = new byte[4];

    RNGCryptoServiceProvider rngCrypto =

    new RNGCryptoServiceProvider();

    rngCrypto.GetBytes(randomBytes);

    Int32 rngNum = BitConverter.ToInt32(randomBytes, 0);

    Console.WriteLine(rngNum);

    Console.ReadLine();

}

时间: 2024-10-09 05:49:21

(转)使用 .NET 的 RNGCryptoServiceProvider 生成随机数的相关文章

.Net使用system.Security.Cryptography.RNGCryptoServiceProvider类与System.Random类生成随机数

.Net中我们通常使用Random类生成随机数,在一些场景下,我却发现Random生成的随机数并不可靠,在下面的例子中我们通过循环随机生成10个随机数: for (int i = 0; i < 10; i++) { Random random1 = new Random(); Console.WriteLine(random1.Next()); } 测试生成随时基本都是相同的结果: 很显然上面的结果是不靠谱的,为什么会这样呢,因为微软的Random类,发现在C#中生成随机数使用的算法是线性同余法

C# 生成随机数的代码

/// 构造随机数 种子 static int GetRandomSeed() { byte[] bytes = new byte[4]; System.Security.Cryptography.RNGCryptoServiceProvider rng = new System.Security.Cryptography.RNGCryptoServiceProvider(); rng.GetBytes(bytes); return BitConverter.ToInt32(bytes, 0);

一起talk C栗子吧(第六回:C语言实例--生成随机数)

各位看官们,大家好,从今天开始,我们讲大型章回体科技小说 :C栗子,也就是C语言实例.闲话休提, 言归正转.让我们一起talk C栗子吧! 看官们,上一回中咱们说的是数组巧妙赋值的例子,这一回咱们说的例子是:生成随机数. 看官们学过C语言的话,还记得如何生成随机数吧.忘记了?那么我们一起说说.使用rand()函数可以生 成随机数,不过,它生成的随机数是一种伪随机数.因为重复执行程序的话,得到的随机数是一样.生成 随机数的函数是通过一个固定的数值来计算随机数的,我们可以通过srand()函数来指定

指定范围内生成随机数

随机数生成20~70之间的数值: public class Random { public static void main(String[] args) { java.util.Random r = new java.util.Random(); for (int i = 0; i < 10; i++) { System.out.print(" " + (r.nextInt(70) + 20)); } } } 运行结果如下图: 指定范围内生成随机数,布布扣,bubuko.com

生成随机数,统计个数,按序排列

有以下一个题目: (一)生成随机数可以用以下方法: 上面用了两种方法生成随机数, 1)采用Random类的nextInt(int a)方法,该方法返回 一个大于等于0且小于a的随机整数,再加上10,就是  10<=result<51等价于[10,50]. 2)采用Math.random()方法,该方法返回一个大于等于0且小于1的double类型的小数,然后再乘以41,经过强制类型转换再加10,就能得出[10,50]的随机数. 下面我们来解决上述的题目: 声明一个数组count,用了存放出现50

[小技巧] 在bash中生成随机数

译至:http://d.hatena.ne.jp/anmino/20091017/1255705586 bash的SHELL参数RANDOM可以生成0-32767的随机数.想设定从1到N的随机数范围的话,可以使用:$ ( ( (RANDOM % n) + 1 )) #!/bin/sh #random_bash.sh for n in 1 2 3 4 5 6 7 8 9 10; do random=$(( (RANDOM % 10) + 1 )) echo -n "$random " d

【转】利用matlab生成随机数函数

原文地址:利用matlab生成随机数函数 rand(n):生成0到1之间的n阶随机数方阵  rand(m,n):生成0到1之间的m×n的随机数矩阵 (现成的函数) betarnd:贝塔分布的随机数生成器 binornd:二项分布的随机数生成器 chi2rnd:卡方分布的随机数生成器 exprnd:指数分布的随机数生成器 frnd:f分布的随机数生成器 gamrnd:伽玛分布的随机数生成器 geornd:几何分布的随机数生成器 hygernd:超几何分布的随机数生成器 lognrnd:对数正态分布

真的了解js生成随机数吗

由js生成一切随机数的基础都是Math.random(),这个方法比较特别,生成的随机数落在的区间是[0,1),进行一次操作的话,js只能生成一个类似于[n,m)这样,左闭右开的区间.所以当有一些特殊需求的时候,就势必要进行一些其它的操作,下面对各种需求进行简单的分析: 生成任意区间的整数 全闭区间[n,m] 这种的最常见,大家都知道的那一长串公式:Math.floor(Math.random()*(m-n+1))+n; 就是生成这个全闭区间的方法.说到这个公式很多人都知道,但真正想明白的人估计

Shell脚本学习三:生成随机数

Linux中生成随机数可以使用$RANDOM这个变量. man bash命令查看对RANDOM的解释. RANDOM Each time this parameter is referenced, a random integer between 0 and 32767 is generated. 可以看出,$RANDOM生成的随机数范围在0到32767之间. 如果想要生成0到9之间的随机数,就可以对10取模运算,这样就可以得到0到9之间的随机数. [[email protected] ~]#