如何在Perl中存储伪随机生成器的状态?
发布时间:2020-12-15 22:01:50  所属栏目:大数据  来源:网络整理 
            导读:有没有办法在Perl中存储内置的伪随机数生成器的当前状态,这样当我的程序再次运行时,它可以从它所在的位置拾取序列,而不是从一个新的序列开始? 现在,我正在存储我的位置以及初始的种子,然后把我已经看到的初始段丢弃,使用类似于 sub consume_upto_n { my ($s
                
                
                
            | 
                         有没有办法在Perl中存储内置的伪随机数生成器的当前状态,这样当我的程序再次运行时,它可以从它所在的位置拾取序列,而不是从一个新的序列开始? 
  
  
现在,我正在存储我的位置以及初始的种子,然后把我已经看到的初始段丢弃,使用类似于 sub consume_upto_n {
    my ($seed,$n) = @_;
    $n = 1 unless defined $n and $n >= 1;
    srand $seed;
    rand for 1 .. $n - 1;
    return;
} 
 例如: srand 0x18;
my @v = map { rand } 1 .. 5; 
 后来: consume_upto_n(0x18,3);
my @z = map { rand } 3 .. 5; 
 然后,$z [0] == $v [2],$z [1] == $v [3]等 解决方法
 我不认为内置的兰特可以让你这样做.但是可以使用替代的rand.例如,Math::Random::MT::Auto允许您使用 
 serialize its objects(大概包括$MRMA :: PRNG,它是替换rand使用的对象). 
  
  
        我不太清楚这一点是什么.如果它是一个相当随机的序列,你怎么能告诉你是继续这个序列还是开始一个新的序列? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
