Gforth随机生成器没有种子

时间:2018-10-30 09:08:25

标签: random gforth

下面的gforth程序打印出0到2之间的10个随机数:

require random.fs
: main 10 0 do i cr . 3 random . loop ;
main

问题是,每次启动后,数字都是相同的。这意味着没有使用time(0)种子。如何获得每次开始都不同的随机数?

1 个答案:

答案 0 :(得分:0)

在GPL许可的源文件random.fs中:

Variable seed
$10450405 Constant generator
: rnd  ( -- n )  seed @ generator um* drop 1+ dup seed ! ;
: random ( n -- 0..n-1 )  rnd um* nip ;

要获取随机数,您可以在变量seed上加上一行,也许是这样的:

utime drop seed !

但是我不是密码学家,但我对当前时间的播种印象并不安全。我不会在任何生产代码中使用它。