C#随机数类Random


C#的Random类是用于生成随机数的类,属于System命名空间,可以生成各种类型的随机数,例如整型、双精度浮点型、布尔型等。

Next

C#中用Random类来生成随机数,其最简单的调用方式如下

// 本代码写在顶级语句中
Random r = new Random();
Console.WriteLine(r.Next(100));

会输出一个100以内的整数。当Next输入两个参数时,那么这两个参数分别表示最小值和最大值。若无输入参数,则会返回一个非负随机整数。

很多情况下,算法需要复现,故而需要设置一个随机数种子,以保证每次运行程序都能得到相同的结果。其方法很简单,只是让构造函数多一个参数而已

Random r = new Random(42);
Console.WriteLine(r.Next(100)); //返回值是66

不同的数据类型

Random封装了多个随机数生成方法,可供输出不同类型的随机数,列表如下

方法 说明
NextBytes 用随机数填充指定字节范围或字节数组
NextDouble 返回随机浮点数
NextInt64 返回随机64位整数,其输入参数与Next相同
NextSingle 返回一个 [ 0 , 1 ) [0,1) [0,1)区间的浮点数

上述方法当然没有囊括所有类型,但只要有了整型,那么就可以随机抽取某个数组,进而在指定范围内随机挑选出一个结果。根据这种思想,可以自行编写随机字符或者布尔型随机数,示例如下

// 随机布尔型
bool nextBool()
{
    
    
    bool[] b = {
    
     true, false };
    Random r = new Random();
    return b[r.Next(2)];
}

Console.WriteLine(nextBool());

Shuffle

Shuffle方法的作用是将一个数组打乱,示例如下

var xs = Enumerable.Range(0, 10).ToArray();
Random r = new Random(42);
r.Shuffle(xs);
foreach (var x in xs)
    Console.WriteLine(x);

由于指定了随机数种子,所以打乱的结果是一致的,最后打印出来的结果均为下面这些

6 2 3 0 5 1 8 4 7 9 \begin{aligned}6\\2\\3\\0\\5\\1\\8\\4\\7\\9\\\end{aligned} 6230518479

猜你喜欢

转载自blog.csdn.net/m0_37816922/article/details/134793408