📅  最后修改于: 2023-12-03 15:14:57.947000             🧑  作者: Mango
在 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
类来生成随机数。