Cum se generează un număr aleatoriu între 1 și 7, cu doar o moară


Cel mai bun răspuns

Oh, băiat … în calitate de tocilar D&D și inginer software, mi se pare atât de distractiv întrebare

Dacă, între, vrei să spui 2-6, reluează o matriță cu 6 șase și reluează 1 … dar asta este plictisitor, nu-i așa?

Dacă, între, vrei să spui 1-7, poți

  • Opțiunea D&D: – care necesită o matriță atipică aruncă o matriță cu 8 fețe și reluați orice 8.
  • Opțiunea XKCD: – distribuția inegală 4 (așa cum este determinat de rolul corect) ( orice număr aleatoriu între 1-6 este, de asemenea, între 1-7)
  • Sistemul de prieteni 6 prieteni îți dau un număr și arunci o matriță pentru a decide care este numărul de prieteni pe care îl vei folosi
  • Soluția normală, plictisitoare – care necesită dierolluri multiple, chiar rulează matrița de două ori, creând 36 de combinații; folosind combinația 7×5 pentru a determina un număr și 1 combinație pentru a relua
  • Dacă a doua matriță nu este 6, atunci utilizați prima matriță. (11-15) → 1 … (61-65) → 6
  • dacă a doua matriță este 6, utilizați 7, cu excepția cazului în care prima matriță este, de asemenea, un 6 (16,26,36,46,56) → 7
  • dacă rezultatul este 66, reporniți.
  • Zaruri duble, estimează distribuția egală. adăugați valoarea a două role cu matrița 7 → 7 (6/36) 6 → 6 (5/36) 5 sau 2 → 5 (5/36) 4 sau 3 → 4 (5/36) 8 → 3 (5 / 36) 9 sau 12 → 2 (5/36) 10 sau 11 → 1 (5/36)
  • Matriță simplă, distribuție egală, cu excepția extremelor comută între rulare {1-6} și {1-6 } +1. Numerele 2 – 6 vor avea fiecare o șansă egală, dar 1 și 7 vor avea doar jumătate.
  • Un singur jetoan, fără repetări. Începeți cu o singură matriță, următoarea listă de matriți va sări peste valoarea anterioară.
  • Să presupunem că ați lansat mai întâi un 6
  • Apoi aruncați un 3. Luați al treilea număr, sărind peste 6 dacă este necesar (ceea ce nu faceți), astfel încât să obțineți un 3
  • Apoi aruncați un 4. Luați numărul 4, omitând 3 dacă este necesar pe care îl faceți), așa că acum primiți un 5
  • o altă opțiune: lista amestecată (7 role și o bucată de hârtie)
  • scrieți numerele 1-7
  • pentru fiecare rolă numerică a muri și schimbă numărul respectiv cu celălalt număr (calificându-l pe al tău). De exemplu,
  • * 1 * 2 3 4 5 6 7. Lansați o matriță (este un 2), al doilea număr, omitând * 1 *, este 3 3 2 1 4 5 6 7
  • 3 * 2 * 1 4 5 6 7 Aruncați o matriță (este un 1), primul număr (sărind peste * 2 *, dar nu îl trecem), este 3 2 3 1 4 5 6 7
  • 2 * 3 * 1 4 5 6 7 Aruncați o matriță (este un 6), al șaselea număr, omitând * 3 *, este 7 2 7 1 4 5 6 3
  • Știți că aveți o listă amestecată. Puteți decide să
  • folosiți numai primul număr
  • să utilizați toate numerele care cresc cu 1 (acesta este de fapt unul dintre lucrurile mele preferate de făcut atunci când am nevoie de un tir, dar nu Nu vreau să sufăr extreme; fac o listă aleatorie de numere și le bifez, 1 cu 1)
  • folosesc toate numerele, incrementând cu o aruncare de matriță și fie repornesc la început, fie fac o secundă listă dacă ajungeți la final

Răspuns

Presupun că aveți nevoie de o distribuită uniform număr între 1 și 7 inclusiv. Trebuie să spuneți acest lucru, deoarece „aleatoriu” poate fi distribuit și în multe alte moduri.

Dacă protocolul dvs. se limitează la rularea morții de n ori, are 6 ^ n rezultate posibile distribuite uniform. Dar 6 ^ n nu este niciodată divizibil cu 7, deci nu există nici o modalitate de a împărți acest spațiu în șapte părți de dimensiuni egale.

Prin urmare, orice metodă corectă pentru realizarea acestui lucru trebuie să permită un număr nelimitat de rulouri ale a muri. Acest lucru nu este atât de rău, deoarece putem face extrem de puțin probabil să aveți nevoie de mai mult de zece role și chiar mai puțin probabil că veți avea nevoie de mai mult de o sută: putem face șansele de a avea nevoie de multe role cu adevărat, într-adevăr mic. Dar nu putem garanta că veți fi în termen de o mie de rulouri, din motivul pe care l-am menționat.

Un protocol simplu este acesta: aruncați matrița de două ori.

  • Ai șase-șase? Păcat. Încercați din nou.
  • Aveți șase altceva? Numiți acest lucru 7.
  • În caz contrar, numiți-l cum spune al doilea rol.

Există cinci moduri de a obține fiecare dintre cele șapte rezultate, acoperind 35 din cele 36 posibilități. Un rezultat, un șase dublu, forțează o reluare – acesta este punctul de ieșire de care avem nevoie pentru a permite o succesiune posibilă de arbitrare lungă de rulouri. Desigur, probabilitatea de a obține o dublă de șase ori de zece ori la rând este neglijabilă, să nu mai vorbim de ceva mai lung decât acesta.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *