Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Генератор случайных чисел


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. Там глава про генераторы.


Наверх

Титульная страница Поиск, карта сайта Написать письмо