这一节,我们使用 Nim 语言来实现符合指数分布的随机数。
Nim 语言是一门高效而优雅的系统级编程语言,可以编译成 C, C++, javascript 等后端。
官网如下:https://nim-lang.org/
中文官网:https://nim-cn.com/
指数分布是一种连续概率分布,常用来表示随机事件发生的时间间隔。
如果 x > 0
若 x <= 0,
若要产生指数分布的随机数,首先 u 取 (0, 1) 之间的符合均匀分布的随机数,
令 f = - beta * ln(1-y),可以得到符合指数分布的随机数。
# 指数分布的随机数
proc exponent*[T: SomeFloat](beta: T): T =
var u = rand(1.0)
result = -beta * T(ln(u))
下面我们画出生成的 1000000 个符合指数分布随机数的图形,我们需要安装 plotly 等库。
when isMainModule:
import plotly, sugar, sequtils, chroma, os
randomize()
var res: seq[float]
for i in 1 .. 1000000:
res.add exponent[float](1)
var colors = @[Color(r: 0.1, g: 0.1, b: 0.