有没有办法在 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]
等等。