1

我的印象是,在启动 Scheme 时,randomize以当前时间为种子调用该过程。但是,如果我有一个仅由 组成的 Scheme 脚本(print (random 10)),我收到的唯一输出是7; 没有其他号码。那么,我做错了什么?作为记录,我正在使用鸡计划。

4

1 回答 1

0

您到底在使用什么随机库?根据文档random,您对' 播种的假设是正确的:

(randomize [SEED]):设置随机数种子。如果未提供 SEED(精确整数),则使用当前时间。在启动时(初始化 Unit extras 时),随机数生成器使用当前时间初始化。

(random N):返回 [0, N-1] 中的伪随机整数。N 是一个整数。

还要注意警告,尤其是第二个似乎可以解释您所看到的行为的警告:

警告:此过程在内部使用 rand(3) 并表现出其缺陷,包括低质量的伪随机性:

  • 在 Windows 和 Solaris 上,只能在 [0, N-1] 范围内生成 32768 个唯一随机值。如果 N >= 32768,则结果集中会有间隙。
  • 在 Mac OS X、Windows 和其他一些平台上,附近种子的输出几乎没有变化。由于随机生成器在启动时以当前秒为种子,因此新进程可能会在长达一分钟的时间内看到相似或相同的随机序列。
  • 在 Linux 上,rand(3) 是 random(3) 的别名,它提供合理质量的输出。
于 2013-01-11T16:19:21.527 回答