Numere aleatorii, proceduri randomizate

În acest articol voi încerca să vă spun ce este un generator de numere aleatoare, cum să îl folosiți și, ca întotdeauna, să luați în considerare exemplele de utilizare a numerelor aleatoare în Delphi.







Această rutină inițializează (sau pur și simplu pornește) un generator de numere aleatorii. Trebuie de asemenea remarcat faptul că generatorul de numere aleatoare poate fi inițializat nu numai accesând Randomize. dar și prin atribuirea variabilei RandSeed (vom vorbi despre aceasta mai jos).

Fără declanșarea unui generator de numere aleatorii, invocarea funcțiilor de selectare a numerelor aleatoare corespunzătoare va produce întotdeauna același rezultat.

Obținerea unui număr aleatoriu

Pentru a obține un număr aleator, trebuie să utilizați funcția Random. Iată titlul său:

funcție Random [(Interval: Integer)];

Dacă accesați o funcție fără parametri, ea returnează o valoare de tip Real în intervalul:

Și dacă parametrul este un număr întreg k, atunci funcția returnează o valoare intregă în intervalul:

sau, pentru claritate, poate fi scrisă ca:

Este important ca implementarea funcției Random să se poată schimba în funcție de versiunea compilatorului, deci nu este recomandată utilizarea acestei funcții, de exemplu, în criptare.

Un exemplu de utilizare a funcției Random.

Puteți asambla cu ușurință o mică galerie de fotografiere, folosind un cronometru și o imagine, și, bineînțeles, un generator de numere aleatorii.







Puneți temporizatorul Timer1 și imaginea Image1 pe formular (nu uitați să încărcați imaginea în el) și scrieți manualul de evenimente OnTimer

procedura TForm1.Timer1Timer (expeditor: TObject);
începe
Randomizează; // rula generatorul de numere aleatoare
Image1.left: = Random (Form1.width);
Image1.top:= Random (Form1.height);
se încheie;

Pur și simplu schimbați aleator coordonatele imaginii, care începe să se miște în mod aleatoriu în formă. Deși aici ar fi mai logic să cauți Randomize o dată când forma este încărcată.

Acum vom face o reacție pentru a intra în imagine. Firește, acesta este evenimentul OnClick pentru imagine:

procedura TForm1.Image1Click (expeditor: TObject);
începe
Timer1.Enabled: = false; // opriți cronometrul
Showmessage ("a lovit țintă!"); Timer1.Enabled: = true; // rulați-o înapoi;

Aici ar fi posibilă păstrarea înregistrărilor de ochelari, o reducere a liniei de viață a imaginii și a altor fețe de joc. Puteți crește viteza jocului prin micșorarea proprietății cronometrului Interval

Deci, un joc simplu este gata.

Completați matricea cu Random

Randomizează;
// umpleți matricea
pentru i: = 1 la 10 face a [i]: = Random (10);

// Exportați matricea pe panza formei
pentru i: = 1 la 10 face Canvas.TextOut (10 + 10 * i, 10, IntToStr (a [i]));

În orice caz, matricea va conține elemente non-negative pentru a umple matricea și cu elemente non-negative:

pentru i: = 1 la 10 nu a [i]: = Random (20) -10;

Astfel, gama de valori a matricei va fi (-10,9)

Obținerea unui număr aleator folosind RandSeed

De asemenea, puteți porni generatorul aleator fără a apela procedura Randomize. Aceasta se face folosind variabila RandSeed. Iată un exemplu care demonstrează acest lucru:

procedura TForm1.Button1Click (expeditor: TObject);
var RandSeed: LongInt;
începe
RandSeed: = aleatoare (10);
Afișați mesajul (IntToStr (RandSeed));
se încheie;

Așa că am vorbit despre numere aleatorii în Delphi. Sper că toată lumea va învăța cel puțin puțin nou pentru ei înșiși în acest articol.







Articole similare

Trimiteți-le prietenilor: