2015-06-05 2 views
0

У меня есть определенный массив, указанный @Array(1..31). Теперь у меня есть код, где я произвольно выбираю число в течение определенного количества раз и сохраняю результаты в другом массиве. Нижеприведенный пример:Рандомизация, основанная на семенах perl

$a1 = $Array[rand(@Array)]; 
push (@a2, $a1); 

Теперь, когда я выполняю этот скрипт несколько раз, я вижу, что новый массив содержит очень разные параметры каждый раз. Но я не хочу этого, я хочу генерировать подобный шаблон каждый раз, когда семя приходит в картину.

Может кто-нибудь, пожалуйста, помогите мне в том, как включить семена, чтобы случайным образом выбирать элементы из массива, которые могут быть предсказуемыми..?

+1

Используйте [ 'srand'] (Http: // perldoc.perl.org/functions/srand.html). – ThisSuitIsBlackNot

+0

Я пробовал srand, но он дает ошибку: Процедура глубокой рекурсии – user3304726

+2

[Изменить] ваш вопрос, чтобы показать код, который вы использовали, и полученную вами ошибку. – ThisSuitIsBlackNot

ответ

0

Вы не заменяют rand с srand: вы используете srand инициализировать семя rand: так называют srand(0) один раз, а затем использовать rand, как вы были.

Из вашего комментария, вы можете использовать:

srand(0); 
sub random { 
    my $random_select = $_[rand(@_)]; 
    print " The random number selected is $random_select\n"; 
    return $random_select; 
} 

или вернуться к исходному коду только добавить первую строку к нему:

BEGIN { srand(0) } 
$a1 = $Array[rand(@Array)]; 
push (@a2, $a1);