Juhuslikud arvud ilma kordusteta

Probleemi sõnastamine

Oletame, et peame looma täisarvuliste juhuslike arvude komplekti ilma kordusteta antud väärtusvahemikus. Näited liikvel olles:

  • ainulaadsete juhuslike koodide genereerimine toodetele või kasutajatele
  • inimestele ülesannete määramine (igaüks juhuslikult loendist)
  • sõnade permutatsioon otsingupäringus (tere, seo-shnikam)
  • mängin lotot jne.

1. meetod. Lihtne

Alustuseks kaalume lihtsat võimalust: peame saama juhusliku hulga 10 täisarvu vahemikus 1 kuni 10. Excelisse sisseehitatud funktsiooni kasutamine KOHTUASI VAHEL (SERV VAHEL) ainulaadsus pole garanteeritud. Kui sisestate selle lehe lahtrisse ja kopeerite selle 10 lahtri võrra allapoole, võivad kordused kergesti juhtuda:

Juhuslikud arvud ilma kordusteta

Seetõttu läheme teist teed.

Kõigil Exceli versioonidel on funktsioon RANK (RANG), mis on mõeldud järjestamiseks või teisisõnu arvu ülemise positsiooni määramiseks komplektis. Nimekirja suurimal numbril on rank=1, edetabelis teisel on rank=2 jne.

Sisestame funktsiooni lahtrisse A2 SLCHIS (RAND) ilma argumentideta ja kopeerige valem 10 lahtrit allapoole. See funktsioon genereerib meile 10 juhusliku murdarvu komplekti vahemikus 0 kuni 1:

Juhuslikud arvud ilma kordusteta

Järgmises veerus tutvustame funktsiooni RANKiga saadud juhusliku numbri positsiooni määramiseks paremusjärjestuses:

Juhuslikud arvud ilma kordusteta

Veerus B saame selle, mida tahtsime – mis tahes soovitud arvu mittekorduvaid juhuslikke täisarve vahemikus 1 kuni 10.

Puhtteoreetiliselt võib tekkida olukord, kui SLCHIS annab meile kaks identset juhuslikku arvu veerus A, nende järjestused ühtivad ja me saame korduse veerus B. Sellise stsenaariumi tõenäosus on aga äärmiselt väike, arvestades asjaolu, et täpsus on 15 kohta pärast koma.

2. meetod. Keeruline

See meetod on veidi keerulisem, kuid kasutab ainult ühte massiivi valemit. Oletame, et peame lehel looma loendi 9 mittekorduvast juhuslikust täisarvust vahemikus 1 kuni 50.

Sisestage lahtrisse A2 järgmine valem, klõpsake lõpus Ctrl + Tõstuklahv + Sisesta (sisestage see massiivivalemina!) ja kopeerige valem soovitud arvu lahtriteni:

Juhuslikud arvud ilma kordusteta

3. meetod. Makro

Ja loomulikult saate probleemi lahendada Visual Basicu programmeerimise abil. Ühes vanas artiklis juhusliku valimi kohta tsiteerisin juba Lotto massiivi makrofunktsiooni, mis toodab etteantud intervallist vajaliku arvu juhuslikke mittekorduvaid numbreid.

  • Kuidas loendada unikaalsete väärtuste arvu vahemikus
  • Elementide juhuslik valik loendist

Jäta vastus