📜  f# 中的随机数 - C# (1)

📅  最后修改于: 2023-12-03 15:14:57.947000             🧑  作者: Mango

F# 中的随机数 - C#

在 F# 中生成随机数可以通过 System.Random 类实现。这个类定义了一个基于熵的随机数生成器,并且可以生成不重复的随机数序列,下面是一个例子:

open System

let rnd = new Random()

// 生成一个随机整数
let randomInt = rnd.Next()

// 生成一个 0 到 9 范围内的随机整数
let randomInRange = rnd.Next(10)

// 生成一个 10 到 19 范围内的随机整数
let randomInRange2 = rnd.Next(10, 20)

// 生成一个随机布尔值
let randomBool = rnd.NextDouble() > 0.5

上述 F# 程序声明了一个 rnd 生成器,通过 rnd.Next() 方法可以生成一个随机整数。如果传入一个上限值,Next() 方法会返回一个在指定范围内的随机整数。通过 rnd.NextDouble() 方法可以生成一个随机的浮点数,这个方法返回一个在 0 到 1 范围内的随机双精度浮点值,我们可以通过比较它的大小来生成一个随机的布尔值。

相应地,C# 中的 System.Random 使用和 F# 完全一致,只不过是用 C# 语法实现:

using System;

Random rnd = new Random();

// 生成一个随机整数
int randomInt = rnd.Next();

// 生成一个 0 到 9 范围内的随机整数
int randomInRange = rnd.Next(10);

// 生成一个 10 到 19 范围内的随机整数
int randomInRange2 = rnd.Next(10, 20);

// 生成一个随机布尔值
bool randomBool = rnd.NextDouble() > 0.5;

因为 System.Random 是基于熵的随机数生成器,在多线程环境下可能会存在竞争条件,所以建议多线程环境使用 System.Security.Cryptography.RandomNumberGenerator 类来生成随机数。