Nim 每日早茶之高斯分布[Nim 语言实现]

高斯分布(gauss) 常用的一种分布,这一节我们来介绍如何产生符合高斯分布的随机数。
Nim 语言是一门高效而优雅的系统级编程语言,可以编译成 C, C++, javascript 等后端。
官网如下:https://nim-lang.org/
中文官网:https://nim-cn.com/
根据中央极限定理,当 N 足够大的时候,我们可以使用 x = sum(ri) - 6,ri 为 0, 1之间的
均匀分布,gauss = mu + sigma * x 来逼近高斯分布。其中 mu 为高斯分布的均值,而
sigma 为高斯分布的方差。

# 正态分布的随机数
# N(mu, sigma)
proc gauss*[T: SomeFloat](mu, sigma: T, n: int = 12): T =
  var x: float
  for i in 1 .. n:
    # randomize()
    x += rand(1.0)
  x -= 6.0
  result = mu + sigma * T(x)

下面,我们来检验一下结果,需要安装使用 nimble install plotly 等命令安装绘图库

when isMainModule:
  import plotly, sugar, sequtils, chroma, os
  randomize()
  var res: seq[float]
  for i in 1 .. 1000000:
    res.add gauss[float](0, 1)


  var colors = @[Color(r: 0.1, g: 0.1, b: 0.9, a: 1.0)]

  var d = Trace[float](`type`: PlotType.Histogram,nbins:5000)
  var size = @[1.float]
  d.marker = Marker[float](size: size, color: colors)
  d.xs = res
  # d.xs = toSeq(1 .. d1.size).map(x => x / 16000)
  # d.xs = frame2Time(d1.size, 200, 80, 16000)
  # d.ys = d1.toSeq
  d.text = @["hello", "data-point", "third", "highest", "<b>bold</b>"]

  var layout = Layout(title: "gauss", width: 1200, height: 400,
                      xaxis: Axis(title: "x"),
                      yaxis: Axis(title: "y"), autosize: false)

  var p = Plot[floavt](layout: layout, traces: @[d])
  # 保存图像
  if not existsDir("./generate"):
    createDir("./generate")
  # run with --threads:on
  p.show(filename = "generate/display.jpg")

在命令行输入 nim c -r --threads:on test.nim

Nim绘图

基本吻合标准正太分布的要求。
Nim 中文博客: https://tea.nim-cn.com/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 多精度代理模型简明教程 引言本文将简要介绍kriging代理模型和多层代理模型的原理及使用方法,以及对其程序进行简...
    zhthuuu阅读 12,712评论 0 7
  • [TOC] 思路框架 在描述统计中,正态分布的一组数据有两个最重要的特征,一个是如何集中的(均值$\mu$),另一...
    八般阅读 8,640评论 0 1
  • 以西瓜书为主线,以其他书籍作为参考进行补充,例如《统计学习方法》,《PRML》等 第一章 绪论 1.2 基本术语 ...
    danielAck阅读 10,168评论 0 5
  • 哎,追《黄金瞳》又一次被灌了一碗熟悉的热鸡汤。 从缅甸历经九死一生回来的庄睿又踏上了考古之路,在车上他再一次说出了...
    尚热门阅读 1,384评论 0 0
  • 11月1日一3日封闭培训
    0dbb66a89a27阅读 832评论 0 0