PDA

Просмотр полной версии : рандом в дельфи


stirena
23.10.2007, 01:35
народ подскажите мне про функции дельфи
Random
RandomRange
RandSeed
Randomize

Я так понимаю что Random (любое число) всегда при первом вызове равен 0,
как зделать так чтоб было другое число???

Cucumber
23.10.2007, 01:55
procedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
x : integer;
begin
// 0 <= x < 10
x := random(10);
// 5 <= x < 15
x := 5+ random(10);
end;

dmitry501
23.10.2007, 03:44
Из справки по Дельфи
Random [( Range: Integer)]: real Возвращает случайные числа X в диапазоне 0 <= X < Range, а если Range не задан, то в диапазоне 0 <= X < 1.Для инициализации начального значения генератора, надо вызвать Randomize или задать значение переменной RandSeed.
Randomize Задает случайное начальное значение для функции Random.


Random-Функция
Генерирует последовательность целых или действительных случайных чисел


Модуль System

Объявление
function Random (Range: Integer);

Описание
Функция Random генерирует последовательность целых или действительных случайных чисел. Парметр Range не является обязательным. Если этот параметр не задан, то функция возвращает случайные действительные числа X, равномерно распределенные в интервале 0 <= X < 1. Например, оператор


for i:=Low(A) to High(A) do
A[i] := Random;

заполняет массив A равномерно распределенными действительными числами в диапазоне от 0 до 1. Если вам требуются действительные случайные числа X, равномерно распределенные в каком-то другом диапазоне A1 <= X < A2, то такие действительные числа легко получить, сдвинув начальное значение чисел и умножив генерируемые числа на длину интервала. Например, операторы


A1, A2: double;
...
A1 := 50;
A2 := 150;
for i:=Low(A) to High(A) do
A[i] := A1 + (A2 - A1) * Random;

обеспечивают заполнение массива действительными случайными числами X, лежащими в диапазоне 50 <= X < 150.
Если в функции Random задан параметр Range, то функция возвращает случайные целые числа в диапазоне 0 <= X < Range. Например, оператор


for i:=Low(M) to High(M) do
M[i] := Random(101);

заполняет массив M целыми числами, равномерно распределенными в диапазоне от 0 до 100. А оператор


for i:=Low(M) to High(M) do
M[i] := 100 + Random(101);

заполняет массив M целыми числами, равномерно распределенными в диапазоне от 100 до 200.
Для рандомизации генератора Random используется процедура Randomize.


Randomize - процедура

Рандомизирует генераторы случайных чисел


Модуль System

Объявление
procedure Randomize;

Описание
Процедура Randomize рандомизирует функции генерации случайных чисел Random и RandG. Если не использовать процедуру Randomize, то при каждом запуске на выполнение функции Random и RandG будут генерировать одинаковые последовательности квазислучайных чисел. Если же вставить в код процедуру Randomize, например, в событии OnCreate формы, то при каждом запуске последовательности случайных чисел будут разными.


RandG - функция

Генерирует последовательность случайных чисел, распределенных по нормальному закону.


Модуль System

Объявление
function RandG(Mean, StdDev: Extended): Extended;

Описание
Функция RandG генерирует квазислучайные действительные числа, распределенные по нормальному закону (закону Гаусса) с математическим ожиданием Mean и средним квадратическим отклонением StdDev. Например, оператор


for i:=Low(A) to High(A) do
A[i] := RandG(10,1);

заполняет массив A случайными числами, распределенными по нормальному закону с математическим ожиданием 10 и средним квадратическим отклоненим 1.
Для рандомизации генератора RandG используется процедура Randomize.


Надеюсь никто не против что я хелп запостил?