Випадкові числа, процедура randomize

У цій статті я постараюся розповісти Вам, що таке генератор випадкових чисел, як ним користуватися і як завжди розглянемо приклади використання випадкових чисел в Delphi.

Ця процедура ініціалізує (простіше кажучи запускає) генератор випадкових чисел. Треба також зауважити, що генератор випадкових чисел може бути инициализирован не тільки за допомогою звернення до Randomize. але і за допомогою присвоєння змінної RandSeed (про це поговоримо нижче).

Без ініціювання генератора випадкових чисел звернення до відповідних функцій вибору випадкового числа завжди будуть давати один і той же результат.

Отримання випадкового числа

Для того, щоб отримати випадкове число потрібно скористатися функцією Random. Ось її заголовок:

function Random [(Range: Integer)];

Якщо звертатися до функції без параметрів, то вона поверне значення типу Real в діапазоні:

А якщо в якості параметра вказано ціле число k, то функція поверне цілочисельне значення в діапазоні:

або, для наочності, можна записати так:

Важливо що реалізація функції Random може змінюватися в залежності від версії компілятора, тому не рекомендується використовувати цю функцію, наприклад, в шифруванні.

Приклад використання функції Random.

Ви легко можете зібрати невеликий тир, використовуючи таймер і картинку Image, ну і звичайно ж генератор випадкових чисел.

Поставимо на форму таймер Timer1 і картинку Image1 (не забудьте завантажити в неї зображення) і напишемо обробник події OnTimer

procedure TForm1.Timer1Timer (Sender: TObject);
begin
Randomize; // запускаємо генератор випадкових чисел
Image1.left: = Random (Form1.width);
Image1.top:=Random(Form1.height);
end;

Ми просто кожен раз змінюємо випадковим чином координати зображення, яке починає рухатися по формі безладно. Хоча тут було б логічніше Randomize викликати один раз при завантаженні форми.

Тепер зробимо реакцію на потрапляння в картинку. Природно ця подія OnClick для картинки:

procedure TForm1.Image1Click (Sender: TObject);
begin
Timer1.Enabled: = false; // зупинимо таймер
Showmessage ( 'Попадання в ціль!'); Timer1.Enabled: = true; // запустимо його назад end;

Тут можна було б вести облік очок, зменшення лінії життя картинки і ще якісь ігрові фінти. Збільшити швидкість гри можна просто зменшивши властивість Interval таймера

Ось і готова проста гра.

Заповнимо масив за допомогою Random

Randomize;
// заповнимо масив
for i: = 1 to 10 do a [i]: = Random (10);

// Виведемо масив на канву форми
for i: = 1 to 10 do Canvas.TextOut (10 + 10 * i, 10, IntToStr (a [i]));

Масив в будь-якому випадку буде містити невід'ємні елементи, щоб заповнити масив ще і невід'ємними елементами треба написати так:

for i: = 1 to 10 do a [i]: = Random (20) -10;

Таким чином діапазон значень масиву буде (-10. 9)

Отримання випадкового числа з допомогою RandSeed

Запустити генератор випадкових можна отримати і без виклику процедури Randomize. Це робиться за допомогою змінної RandSeed. Ось приклад, який демонструє це:

procedure TForm1.Button1Click (Sender: TObject);
var RandSeed: LongInt;
begin
RandSeed: = random (10);
ShowMessage (IntToStr (RandSeed));
end;

Ось ми і поговорили про випадкових числах в Delphi. Сподіваюся, що кожен почерпне хоч трохи нового для себе в цій статті.

Схожі статті