Numerele aleatoare fără repetiție - un novice programatori pe blog

Numerele aleatoare fără repetiție - un novice programatori pe blog


Chiar și anul trecut, ne-am întâlnit cu operatorul standard de rand. responsabil pentru generarea de numere aleatoare. Operatorul este foarte util, deoarece nu avem de a conduce personal date de la tastatură sau conectați fișiere cu matrice de date. Cu toate acestea, dezordine ca operatorul are un mic dezavantaj. deoarece numerele sunt luate la întâmplare și restricțiile sunt doar în intervalul. ele pot fi repetate. Desigur, cineva este mulțumit. dar pentru unii este o problemă care trebuie să decidă pentru el însuși. Cel mai recent, am fost rugat să scrie cât mai mult posibil program simplu, în care numere aleatoare au dedus, astfel încât nici un număr se repetă. De fapt, pentru a face simplu. După cum știm, declarație aleatoare afișează numere aleatoare și poate fi repetată. Acest lucru este evident mai ales atunci când specificați un interval îngust. de exemplu, în cazul în care se repetă elementele de afișare ale șirului 10, umplându-le cu numere aleatoare de la 0 la 9. printre ele este aproape întotdeauna. Următoarele este codul de implementare.

Care este algoritmul nostru pentru a elimina numere repetate. Pentru a face numerele să nu se repete, este suficient pentru a face un fel de filtru care din toate numerele aleatoare vor fi luate numai de către cei care nu au fost încă. Exemplu matrice pentru a explica. Uita-te la secvența.

Pasul 1.Zapolnyaem prim element
Pasul 2.Zapolnyaem al doilea element
Subpas 1. verifică cu prima.
a) În cazul în care elementele sunt diferite, atunci du-te la pasul următor.
b) În cazul în care acestea sunt identice, apoi umple al doilea element din nou până atunci. până când acestea sunt inegale.
Pasul 3. Completați al treilea element.
Subpas 1. verifică cu prima.
a) În cazul în care elementele sunt diferite, atunci du-te la următorul subpas.
b) În cazul în care acestea sunt identice, apoi umple al treilea element din nou până atunci. până când acestea sunt inegale.
2. subpas verifică cu al doilea.
a) În cazul în care elementele sunt diferite, atunci du-te la pasul următor.
b) În cazul în care acestea sunt identice, apoi umple al treilea element din nou până atunci. până când acestea sunt inegale.
Pasul 4.

Numerele aleatoare fără repetiție - un novice programatori pe blog


Fotografiată când pasul 3 este egal comparație apare primul și al treilea element și primul și apoi al treilea și vtorogo.I în acest fel algoritmul se repetă de la primul la al zecelea schaga. De fiecare dată când facem pași i, vom face i-1 subfa-ze.

Și acum tot algoritmul. declarație Goto a fost folosit pentru algoritmul. Despre l-am menționat într-un articol din bucla .Itak codul algoritm

Codul complet cu ieșirea generată de elementele de matrice de pe ecran.


Același cod, dar fără utilizarea etichetelor.

Vă mulțumim pentru ifnu

Ajuta pozhaluysta.Vot sarcină dată trei numere diferite, găsiți media acestora. Media este un număr care este mai mare decât cel mai mic numar de date. dar mai mică decât maximul.

abc pascal
este imposibil de a face aleatoriu -10-10

Ajutor cu sarcina de a Jocurilor Olimpice.
În sala de mese a adus și calculatoare. Ele au fost plasate după cum urmează:
1 2 3 4 și așa mai departe.
1 2 3 4 5 6
(În partea de jos a calculatoarelor din partea de sus a tabelelor)
aveți nevoie pentru a rezolva problema cu ajutorul ciclului și div, mod. pliz ajutor.
Vă mulțumim anticipat.

Declarație: = random (max, min);

var x: integer;
începe
randomiza;
x: = aleator (2,5);
se încheie;

Scrii că numărul maxim de loc stilou, în timp ce al doilea minim. Dar, în exemplul de contrariul. Așa cum am înțeles că nu contează?

Practic, este o greșeală de scriere, corectat

Declarație: = random (max, min);

var x: integer;
începe
randomiza;
x: = aleator (2,5);
se încheie;

Scrii că numărul maxim de loc stilou, în timp ce al doilea minim. Dar, în exemplul de contrariul. Așa cum am înțeles că nu contează?

Vă mulțumim pentru descrierea metodei bulei. Aș dori să examineze mai detaliat metoda lui Hoare. Ce metoda de alegere?

Creați o serie de 20 de numere aleatoare în intervalul de la -30 la 0. Elementele impare pătratelor și pentru a afișa matrice de căutare. un modul de a rezolva?

Ajutor. au nevoie de un astfel de program, rata = 1000 Throw 3 Cube. în cazul în care numărul este mai mare de 12 este câștigat și rata de creștere a trei dintre ele. și dacă vom pierde pariul scade numerele dvoe.Esli pe zaruri sunt aceeași victorie, atunci zaschitat, asta e tot. vă rugăm să ajute.