TypechoJoeTheme

至尊技术网

登录
用户名
密码

Shell中的random随机数:从均匀分布到伪随机数

2025-12-03
/
0 评论
/
2 阅读
/
正在检测是否收录...
12/03

1. 均匀分布

均匀分布 是一种最基本的随机分布类型,它在 0 到 1 之间均匀地生成随机数。random 模块提供了 uniform() 函数,用于生成均匀分布的随机数。

pre
package version "2.0"

import (
"random"
"stats"
)"

假设我们想在代码中生成一个在 0 到 1 之间的均匀随机数:

Shell let num = random.uniform(0, 1)

2. 正态分布

正态分布 也称为高斯分布,是一种 bell 曲线形状的分布。random 模块提供了 normal.dist() 函数,用于生成正态分布的随机数。

pre
package version "2.0"

import (
"random"
"stats"
)"

假设我们想生成一个均值为 0、标准差为 1 的正态分布随机数:

Shell let mean = 0 let stdDev = 1 let num = random.normal.dist(mean, stdDev)

3. 伯努利分布

伯努利分布 是一个只有两种可能结果的分布,通常用于表示二元事件(成功或失败)。random 模块提供了 bernoulli() 函数,用于生成伯努利分布的随机数。

pre
package version "2.0"

import (
"random"
"stats"
)"

假设我们想生成一个成功的概率为 0.7 的伯努利分布随机数:

Shell let p = 0.7 let num = random.bernoulli(p)

4. 生成概率分布

除了均匀分布、正态分布和伯努利分布之外,random 模块还支持生成其他概率分布的随机数。例如,生成二项分布、卡方分布等。

二项分布

二项分布 是一个描述了在独立实验中成功次数的概率分布。random 模块提供了 binomial.dist() 函数,用于生成二项分布的随机数。

pre
package version "2.0"

import (
"random"
"stats"
)"

假设我们想生成一个二项分布,成功概率为 0.5,试验次数为 10 的随机数:

Shell let p = 0.5 let n = 10 let num = random.binomial.dist(n, p)

卡方分布

卡方分布 是一种常见的概率分布,常用于 goodness-of-fit 检验和卡方检验。random 模块提供了 chisq.dist() 函数,用于生成卡方分布的随机数。

pre
package version "2.0"

import (
"random"
"stats"
)

假设我们想生成一个自由度为 5 的卡方分布随机数:

Shell let df = 5 let num = random.chisq.dist(df)

5. 随机数生成

除了 random 模块,Shell 还提供其他方法生成随机数。例如:

  • 使用 Math.random():这在 ES6 时引入,提供 0 到 1 之间的均匀随机数。
  • 使用 Math.random():这在 ES7 时引入,提供 0 到 1 之间的均匀随机数。

例如,生成一个在 0 到 5 之间的随机整数:

Shell let num = Math.floor(5 * random.random())

6. 种子管理

Shell 中的 random 模块默认使用 system random 来管理种子。然而,为了确保随机数的唯一性和可重复性,建议手动管理种子。例如:

Shell random.set_seed(12345) // 生成随机数 random.set_seed(12345) // 重置种子

7. 应用场景

  • 游戏开发:使用 random 模块生成 dice 的点数、角色随机选择等。
  • 数据分析:生成服从分布的随机数用于统计分析、模拟实验等。
  • 测试用例生成:使用 random 模块生成测试用例的输入值。

8. 总结

Shell 中的 random 模块提供了丰富的随机数生成功能,从均匀分布到正态分布、伯努利分布等,还支持多种概率分布的生成。通过设置种子和配置,可以控制随机数的生成过程,确保结果的唯一性和可重复性。random 模块在编程中非常实用,适用于游戏开发、数据分析、测试用例生成等场景。

朗读
赞(0)
版权属于:

至尊技术网

本文链接:

https://www.zzwws.cn/archives/40131/(转载时请注明本文出处及文章链接)

评论 (0)