URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 1007
[ Назад ]

Исходное сообщение
"Random генератор"

Отправлено didimor , 29-Сен-02 20:07 
Народ подскажите кто может!
Есть такой код по винду на С:
int seed = 100; // Может быть любым числом
int randnum[100];
srand( seed );
for(int i=0;i < 100;i++) {
randnum[i] = rand() % 256;
}
Получили цепочку 'случайных' чисел. Причем последовательность
одинакова если seed одно и то же.

Теперь на Перле под Линух:
$seed = 100;
@randnum = ();
srand $seed;
for($i=0;$i<100;$i++) {
push @randnum, int rand(256);
}
и получаем СОВСЕМ другую последовательность!
Что не так?
Заране всем спасибо.


Содержание

Сообщения в этом обсуждении
"RE: Random генератор"
Отправлено sas , 01-Окт-02 05:33 
>Народ подскажите кто может!
>Есть такой код по винду на С:
>int seed = 100; // Может быть любым числом
>int randnum[100];
>srand( seed );
>for(int i=0;i < 100;i++) {
> randnum[i] = rand() % 256;
>}
>Получили цепочку 'случайных' чисел. Причем последовательность
>одинакова если seed одно и то же.
>
>Теперь на Перле под Линух:
>$seed = 100;
>@randnum = ();
>srand $seed;
>for($i=0;$i<100;$i++) {
>push @randnum, int rand(256);
>}
>и получаем СОВСЕМ другую последовательность!
>Что не так?
>Заране всем спасибо.

Hi,

It depends on which random number generator is used. In C it is simple one, but even simple ones can produce different output (implementation difference). If you need always same output with the same seed, then you should use "deterministic" generator.

Also If you have 2 programs (for example one running on Windows and second on Linux ) using different random generators (algorythms), then you should not expect to have exactly same output even with the same seed.

So if you do not like builtin Perl functions, then
take a look at the Perl's Math:TrulyRandom or Math:PRSG.

Hope it helps
--- sas