Borland Pascal RND
вроде так всегда было...
Перед этим где-нибудь нужно написать
randomize;
а то я не понимаю...:)
я именно про этот рандомайз и спрашиваю
как функция считаетсЯ?
стандартная
просто увеличение на число вроде...
или нет?
Randomize (procedure)
_____________________
Initializes the built-in random number generator with a random value
(obtained from the system clock).
а дальше работает функция вроде
которая увеличивает число....
вот это мне и интересно... каким образом?
Если мне не изменяет память, вместе с Borlad Pascalем поставляются исходники всех библиотек. Эти исходники отличаются понятностью и хорошей комментированностью. Думаю функция random не очень длинная и разобраться с ней не составит труда.
randx:=(randx*25173+13849) mod 65536;
А вообще - могу поискать исходники, если очень надо.
Но не сегодня.
я нашла такую -
следующее_число = текущее_число * 134775813 + 1.
В силу переполнения разрядности получается плохо предсказуемая последовательность псевдослучайных чисел.
но знаешь, мне твой вариант больше нравится.
".....
stdlib.h:
...
#define RAND_MAX 0x7fffffff
...
============
/usr/src/lib/libc/stdlib/rand.c:
...
static int
do_rand(unsigned long *ctx)
{
return *ctx = *ctx * 1103515245 + 12345) % u_long)RAND_MAX + 1;
}
...
static u_long next = 1;
int
rand
{
return do_rand(&next);
}
....."
P.S. libc FreeBSD 4.5
Оставить комментарий
rub-makar
как он работает?подскажите, обычный стандартный генератор в BP
не могу нигде найти