C# Random生成随机数(附带实例)
C# 的 System 命名空间内有 Random 类,这个类可以产生随机数。
要产生随机数首先要创建随机数对象,语法如下:
在面向对象的方法中,Next() 的用法有下列几种:
【实例 1】产生整数的随机数。
【实例 2】产生 5 个 0~1.0 的随机数。
【实例 3】使用值为 100 的随机数种子,创建 5 笔随机数,读者可以重复执行此程序,每次可以获得一样的随机数。
要产生随机数首先要创建随机数对象,语法如下:
Random rnd = new Random(); // rnd就是随机数对象有了随机数对象 rnd 后,就可以用此对象调用 Next() 方法生成随机数了。
在面向对象的方法中,Next() 的用法有下列几种:
- Next():回传 0(含)~ 2147483647(不含)的整数值;
- Next(max):回传 0(含)~ max(不含)的整数值;
- Next(min, max):回传 min(含)~ max(不含)的整数值;
- NextDouble():回传 0.0(含)~ 1.0(不含)的浮点数;
上述 min、max 都是 int 数据类型。
【实例 1】产生整数的随机数。
Random rnd = new Random(); int i, r; Console.WriteLine("产生 5 个 0 ~ 2147483647(不含) 随机数"); for (i = 0; i < 5; i++) { r = rnd.Next(); Console.Write($"{r}\t"); } Console.WriteLine(); Console.WriteLine("产生 8 个 0 ~ 6(不含) 的随机数"); for (i = 0; i < 8; i++) { r = rnd.Next(6); Console.Write($"{r}\t"); } Console.WriteLine(); Console.WriteLine("产生 8 个 1 ~ 7(不含) 的随机数"); for (i = 0; i < 8; i++) { r = rnd.Next(1, 7); Console.Write($"{r}\t"); }执行结果为:
产生 5 个 0 ~ 2147483647(不含) 随机数 1195709968 1818420620 694702415 1561246397 318308710 产生 8 个 0 ~ 6(不含) 的随机数 4 3 4 4 0 5 5 5 产生 8 个 1 ~ 7(不含) 的随机数 4 3 4 4 3 4 6 4
【实例 2】产生 5 个 0~1.0 的随机数。
Random rnd = new Random(); int i; double r; Console.WriteLine("产生 5 笔 0 ~ 1.0(不含) 随机数"); for (i = 0; i < 5; i++) { r = rnd.NextDouble(); Console.WriteLine($"{r}\t"); }执行结果为:
产生 5 笔 0 ~ 1.0(不含) 随机数 0.483980573473489 0.951977861557146 0.250364108593373 0.211847398994419 0.0765989283456462
C#随机数种子
基本上每次执行前面的随机数实例时,都可以获得不一样的随机数,如果想要每次执行都获得一样的随机数,在创建随机数对象时,需设定随机数种子,语法如下:Random rnd = new Random(int seed);上述语句中 seed 是种子的值,数据类型是 int,设定以后可以获得一样的随机数。在一些数据实验中,我们期待每次使用的随机数都一样,方便追踪数据变化,这时可以使用随机数种子,产生固定的随机数。
【实例 3】使用值为 100 的随机数种子,创建 5 笔随机数,读者可以重复执行此程序,每次可以获得一样的随机数。
Random rnd = new Random(100); int i, r; Console.WriteLine("产生 5 个 0 ~ 2147483647(不含) 随机数"); for (i = 0; i < 5; i++) { r = rnd.Next(); Console.Write($"{r}\t"); }执行结果为:
产生 5 个 0 ~ 2147483647(不含) 随机数 2080427802 341851734 1431988776 1938005744 761513014再次执行程序,得到的结果是一样的。