Gforth随机生成器没有种子



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

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

问题是,每次起跑后,数字都是一样的。这意味着没有使用时间(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 !

然而,我不是密码学家,但我觉得用当前时间播种在密码上是不安全的。我不会在任何生产代码中使用它。

相关内容

  • 没有找到相关文章

最新更新