Случайные числа

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Случайные числа

Re: Случайные числа

somewhere » 14 мар 2007, 12:09

64k, начиная с $f000. Счетчик давал число от 0..65535, я использовал только 14 бит - соответственно получал данные (состоят из кода вперемешку с текстом) из первых 16К ПЗУ. Конечно не встретятся, но для многих программ достаточно.

Re: Случайные числа

Хыиуду » 14 мар 2007, 10:03

Somewhere, а какой объем ПЗУ БИОСа? У меня просто такое чувство, что некоторые комбинации там вполне себе могут не встретиться

Re: Случайные числа

somewhere » 13 мар 2007, 17:02

В свое время не знал, как генерить случайные числа на asm... И хорошо... Зато изучил работу с таймером, т.к. генерация случайных чисел работала через таймер, получая 16 бит из ПЗУ BIOS по смещению, которое выдавал его счетчик. Конечно, ни ахти случайность, но для работы очень многих программ подходила вполне...

Re: Случайные числа

Yura_ua » 12 мар 2007, 22:26

Кстати вспомнил прикольную игрушку на Паскале, которой незнаю сколько уже лет.

Program SuRulet;
Uses crt;
Procedure play;
Var n,g:integer;
Begin
randomize;
n:=random(10);
writeln('Загадано целое число от 0 до 10. Попробуйте угадать:');
readln(g);
while g<>n do
begin
writeln('Вы не угадали!');
if g<n then writeln('Ваше число меньшезадуманого.') else writeln('Ваше число больше задуманого.');
writeln('Попробуйте ещё раз:');
readln(g);
end;
writeln('Поздравляю! Вы угадали.');
readln;
end;
Begin
textbackground(white);
textcolor(black);
clrscr;
gotoxy(32,4);
writeln('Рулетка');
writeln('--------------------------------------------------------------------------------');
play;
readln;
end.

Re: Случайные числа

Yura_ua » 12 мар 2007, 22:13

Duncon писал(а): При этом следует помнить, что в разных версиях компилятора используются различные алгоритмы генерирования последовательностей значений. По этому не рекомендуется использовать функцию Random для шифровки-дешифровки данных (т.е. когда необходимо генерировать одинаковые псевдослучайные последовательности чисел).
А зря не рекомендуется (по моему), ведь эту псевдослучайно сгенерированую последовательность можно записать в определьонное место шифруемого файла, а потом использовать как ключ к дешифровке. Зашифрованый таким способом файл будет труднее расшифровать кому-то левому, кто этого не не должен делать.

Re: Случайные числа

namomelkor » 12 мар 2007, 11:10

EgorX писал(а):вот в паскале знаю, а в Delphi ... не знаю =(
в Delphi точно также как и в паскале ))))))))

Re: Случайные числа

SergeyS » 10 мар 2007, 16:23

Код: Выделить всё

var
  X: Real;
  min, max: Real;
begin
  min := 10;
  max := 20;
  Randomize;
  X:= min + Random * (max - min);     { Random возвращает число лежащее в интервале [0..1) }
  { X будет лежать в интервале [min..max), если его округлить тогда будет лежать в промежутке [min..max] }
end;

Re: Случайные числа

Duncon » 10 мар 2007, 14:49

Функция RandG( Mean, StdDev: Extended ): Extended;
Модуль: Math
Функция генерирует случайное число с отклонением по Гауссу от среднего значения Mean. Возращаемое значение будет лежать в диапазоне Mean-StdDev ... Mean+StdDev.

Код: Выделить всё

var
  X: Real;
begin
  Randomize;
  X:= RandG(100,10);     { 90<=X<=110 }
end;
Функция Random [( Range: Integer );
Модуль: System
Функция генерирует случайное целое число в заданном диапазоне [0…Range).
Параметр Range является необязательным. Если данный параметр опущен, то функция возвращает число действительного типа в диапазоне [0…1).
Генератор случайных чисел инициализируется процедурой Randomize. Если не производить инициализацию, то при каждом запуске программы, функция Random будет возвращать одну и ту же последовательность чисел. Если необходимо сгенерировать определенную последовательность, то для этого нужно присвоить системной переменной RandSeed: LongInt конкретное значение. При этом следует помнить, что в разных версиях компилятора используются различные алгоритмы генерирования последовательностей значений. По этому не рекомендуется использовать функцию Random для шифровки-дешифровки данных (т.е. когда необходимо генерировать одинаковые псевдослучайные последовательности чисел).

Код: Выделить всё

var
  X: Real;
begin
  Randomize;
  X:= Random;     { 0<=X<1 }
end;
Функция Randomize;
Модуль: System
Процедура инициализирует генерацию случайных чисел со случайного значения, используя текущее значение системного времени.
Если не инициализировать генератор случайных чисел с помощью данной процедуры, то при каждом запуске программы будет генерироваться одна и та же последовательность чисел. Для генерации определенной последовательности, необходимо системной переменной RandSeed: LongInt присвоить конкретное значение.

Re: Случайные числа

EgorX » 10 мар 2007, 14:28

вот в паскале знаю, а в Delphi ... не знаю =(

Случайные числа

Yura_ua » 10 мар 2007, 14:23

Как в Delphi можно сгенерировать случайное число из определённого промежутка?

Вернуться к началу