如何解决对具有种子值的数组进行采样以获得一致的结果
我正在对多个数组进行采样,并且希望添加一个种子值,以便在每次运行时(无论现在还是将来)都获得一致的结果。
我的例子:
constant_seed_value = 123456789
["a","b","c"].sample(seed: constant_seed_value ) should return "a" when run every time.
解决方法
只需将带有种子的Random.new
传递给sample
:
%w[a b c].sample(1,random: Random.new(123456789))
#=> ["a"]
,
您将需要使种子成为常数(或将其写入文件并在每次程序运行时读取它)。我以为你不在乎种子到底是什么。
如果产生副计算
.as-console-wrapper { max-height: 100% !important; top: 0; }
/** Thanks Nina :) **/
你会写
Random.new_seed
#=> 44220669194288225494276674522501875094
请参见Random::new_seed。
程序运行时,必须将种子初始化为该值。
SEED = 44220669194288225494276674522501875094
请参见Random::srand。
现在让我们计算一些伪随机值。
Random.srand(SEED)
#=> 129123040985656142450143558000073927364
arr = (1..1000).to_a
现在,还原原始种子,就像重新运行程序一样。
arr.sample(4)
#=> [762,619,41,997]
rand
#=> 0.9619996498741139
rand
#=> 0.7952214967836931
如果我们重复伪随机值的初始构造,我们会发现它们与我们第一次计算它们时相同。
Random.srand(SEED)
#=> 190782386885144604306184636344084340916
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。