加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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模块.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读