![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Генератор случайных чисел
009 © (2004-09-14 13:21:00)народ, кто знает какие варианты создания генератора случайных чисел помимо функции random?
Amoeba (2004-09-21 17:22:00) [1]На Torry есть готовые альтернативные генераторы, даже с исходниками (скачивай и используй или изучай):
http://www.torry.net/pages.php?id=309
009 (2004-09-21 12:42:00) [2]огромное всем спасибо:) извините что с задержкой отвечаю:)
Defunct (2004-09-15 09:09:00) [3]Konrads (15.09.04 06:13) [15]
попробуйте [11] ;)
Konrads (2004-09-15 06:13:00) [4]Кстати мой генератор лучше назвать генератором псевдослучайной последовательности с длинной (2 в степени <длинна массива>).
Так что если его инициализировать не лабудой из таймера а "со смыслом", то можно использовать для всяких штучек типа криптографии.
PVOzerski (2004-09-14 17:03:00) [5]Можешь еще позаимствовать исходник Random'а из системной библиотеки FreePascal.
Master Kolyan (2004-09-14 15:29:00) [6]shr eax,8 // If RGB result is needed else comment it
Это ненадо писать
Master Kolyan (2004-09-14 15:27:00) [7]>(Number-номер параметра) тьфу блин - (Number-номер элемента)
Master Kolyan (2004-09-14 15:26:00) [8]Держи братан: (все проверено тем же форумом работат в 1.5 раза быстрее и с новыми возможностями)
>Defunct © (26.02.04 02:17) [39] Бльшой ему пасиб!!!
Function MyRandom(Number:Integer):Cardinal;Assembler;
asm
mov ecx, 0F7F77B0Ah
add eax, Code // Integer randomize
mul ecx
xor ecx,edx
mul ecx
shr eax,8 // If RGB result is needed else comment it
end;
эта функция работает как массив случайных чисел (Number-номер параметра) Всё проверено никаких видимых, хоть засмотрись, закономерностей не видно, супер короче
Konrads (2004-09-14 14:36:00) [9]Берёш массивчик как глобальную переменную, не очень короткий но и не очень длинный 128 - 256 вполне достаточно, заполни его при запуске программы всякой лабудой с таймера а потом сдвигай в какую нибудь сторону. Последний разряд заполни модулем суммы из произвольного кол-ва произвольных ячеек по нужному тебе основанию, к примеру x mod 10 - получишь цифирьки от 0 до 9 этоже и будет выходом генератора. Работает отлично.
Примерчик:
var
Form1: TForm1;
REC: ARRAY[1..128] of integer;
function TForm1.MyRandom : integer;
var i,j : integer;
begin
j := 0;
j := j + Rec[1];
j := j + Rec[3];
j := j + Rec[5];
j := j + Rec[7];
j := j + Rec[11];
j := j + Rec[13];
j := j + Rec[17];
j := j + Rec[19];
j := j + Rec[23];
j := j + Rec[29];
j := j + Rec[127];
j := j mod 10;
for i := 127 downto 1 do rec[i+1] := rec[i];
Rec[1] := j;
result := j;
end;
Когда-то сам придумал ;)
Vasya.ru (2004-09-14 14:31:00) [10]Который раз встречаю этот вопрос, и никак не пойму - а нафига? Чем Рандом не устраивает?
Григорьев Антон (2004-09-14 14:17:00) [11]RandG из модуля Math. Правда, и там всё сводится к Random.
Ega23 (2004-09-14 13:55:00) [12]kukuikar © (14.09.04 13:52) [6]
Это всего лишь приступ послеобеденного веселья, вызванного "пароксизмом довольства"...
kukuikar (2004-09-14 13:52:00) [13]а как же ето?
> Ega23 © (14.09.04 13:37) [2]
> 13, 456,3,9,67,16,35,98,....
Ega23 (2004-09-14 13:47:00) [14]kukuikar © (14.09.04 13:44) [4]
Не, ни в коем разе.
2 009 (14.09.04 13:21)
А правда, чем тебе рэндом не угодил?
kukuikar (2004-09-14 13:44:00) [15]орешник?
Рамиль (2004-09-14 13:42:00) [16]А чем не устраивает?
Ega23 (2004-09-14 13:37:00) [17]13, 456,3,9,67,16,35,98,....
TUser (2004-09-14 13:22:00) [18]См. Кнут, т.2. Там глава про генераторы.