美文网首页
Nim早茶之均匀分布 [Nim 语言实现]

Nim早茶之均匀分布 [Nim 语言实现]

作者: Python高效编程 | 来源:发表于2019-11-01 21:38 被阅读0次

Nim 语言是一门高效而优雅的系统级编程语言,官网如下:https://nim-lang.org/
中文官网:https://nim-cn.com/
下面让我们使用 Nim 语言实现一个简单的均匀分布
首先设置一个种子值,这决定随机数的初始值。

var
  randomSeed*: int = 0

主要函数

proc uniformDist*[T: SomeFloat](left: T, right: T,
  seed: int = randomSeed): T =
randomSeed = seed
randomSeed = 2045 * randomSeed + 1
randomSeed = randomSeed mod 1048576
result = randomSeed / 1048576
result = left + (right - left) * result

通过上面的基础函数,我们还可以直接生成一维的随机序列

# 一维数组
proc uniformDistSeq*[T: SomeFloat](left: T, right: T, size: int = 8,
  seed: int = randomSeed): seq[T] =
randomSeed = seed
for i in 0 ..< size:
  result.add(uniformDist[T](left, right, randomSeed))

最后让我们检验结果,首先要使用 nimble install timeit 安装一个测量运行时间的库,

# Nim 编程
when isMainModule:
  import timeit
  timeOnce:
    echo uniformDistSeq[float](-2.0, 3.0, 10, 12)

输出结果

@[-1.882979393005371, 2.307146072387695, 1.113722801208496, 0.5631332397460938, -0.3925199508666992, 0.2967052459716797, -0.237767219543457, 1.766040802001953, -0.4465551376342773, -0.2052516937255859]
test-once -> [34ms 779μs 800.00ns]

欢迎关注 Nim中文社区https://nim-cn.com/
Nim 每日早茶:https://tea.nim-cn.com/

相关文章

网友评论

      本文标题:Nim早茶之均匀分布 [Nim 语言实现]

      本文链接:https://www.haomeiwen.com/subject/sjiqbctx.html