首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Scheme中正确地设定随机函数的种子?

如何在Scheme中正确地设定随机函数的种子?
EN

Stack Overflow用户
提问于 2013-01-12 00:05:00
回答 1查看 860关注 0票数 1

我的印象是,在启动方案时,randomize过程是以当前时间作为种子调用的。但是,如果我有一个只包含(print (random 10))的方案脚本,我收到的唯一输出是7;没有其他数字。那么,我做错了什么呢?郑重声明,我使用的是鸡计划。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-12 00:19:22

确切地说,您使用的是哪个随机库?根据documentation的说法,你关于random种子的假设是正确的:

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

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

还要注意警告,特别是第二个似乎解释了你所看到的行为的警告:

Warning:此过程在内部使用rand(3),并显示其缺陷,包括低质量的伪随机性:

  • 在Windows和Solaris上,在0,N-1范围内只能生成32768个唯一的随机值。如果N >= 32768,则结果集中将有间隙。
  • 在Mac、Windows和其他一些平台上,附近的种子在输出中几乎看不到差异。由于随机生成器在启动时以当前秒数作为种子,因此新进程可能会在长达一分钟的时间内看到类似或相同的随机序列。
  • On Linux,rand(3)是随机(3)的别名,可提供质量合理的输出。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14281975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档