У цій статті я постараюся розповісти Вам, що таке генератор випадкових чисел, як ним користуватися і як завжди розглянемо приклади використання випадкових чисел в 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. Сподіваюся, що кожен почерпне хоч трохи нового для себе в цій статті.