Есть ли способ сохранить текущее состояние встроенного генератора псевдослучайных чисел в 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]
и т.д.