Nim 语言编程实现超级简单的均匀分布

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/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值