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/
网友评论