perl – 我需要一个便携,一致的伪随机数生成器
发布时间:2020-12-15 21:49:09 所属栏目:大数据 来源:网络整理
导读:我正在编写一个 kid sister encryption函数,我需要一个PRNG,它可以在OS上产生一致的结果(所以没有浮点数学,利用硬件或系统级软件).如果PRNG的持续时间超过230,那将是一件好事,但并非必要. 我目前正在使用32位Xorshift: #!/usr/bin/perluse strict;use warni
我正在编写一个
kid sister encryption函数,我需要一个PRNG,它可以在OS上产生一致的结果(所以没有浮点数学,利用硬件或系统级软件).如果PRNG的持续时间超过230,那将是一件好事,但并非必要.
我目前正在使用32位Xorshift: #!/usr/bin/perl use strict; use warnings; { use integer; #use integer math my $x = 123456789; my $y = 362436069; my $w = 88675123; my $z = 521288629; sub set_random_seed { $w = shift; } sub random { my $t = $x ^ ($x << 11); $x = $y; $y = $z; $z = $w; my $rand = $w = ($w ^ ($w >> 19)) ^ ($t ^ ($t >> 8)); return $rand % 256; #scale it back to a byte at a time } } set_random_seed(5); print map { random(),"n" } 1 .. 10; 但我很担心,因为我真的不明白它是如何运作的.例如,原始源没有设置种子的能力,所以我添加了一个,但我不知道我是否为种子选择了正确的变量. 所以,所有这些归结为 >您知道CPAN上的模块是否符合我的需求? 解决方法
Math::Random::Auto是实施着名的
Mersenne twister PRNG的CPAN模块.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |