Setul de sarbatori creste sansa de a gasi iteme/obiecte, nu produse.
“Sansele” de a gasi un obiect, pentru un non-Aventurier, fara setul de sarbatori sint, aproximativ:
- 10 minute: 1.9
- 30 minute: 5.7
- 1 ora: 11.4
- 2 ore: 22.8
Pentru un Aventurier, fara premium pe caracter, “sansele” cresc cu 10%, respectiv:
- 10 minute: 1.9 x 1.1 = 2.09
- 30 minute: 6.27
- 1 ora: 12.54
- 2 ore: 25.08
Pentru un non-Aventurier, cu setul de sarbatori complet, “sansele” cresc cu 52%, respectiv:
- 10 minute: 1.9 x 1.52 = 2.888
- 30 minute: 8.664
- 1 ora: 17.328
- 2 ore: 34.656
Pentru un Aventurier, fara premium pe caracter, cu setul de sarbatori complet, “sansele” cresc cu (10% + 52%) = 62%.
Am pus cuvintul sanse intre ghilimele pentru ca valorile de mai sus pot fi interpretate ca sanse (procente, probabilitati) numai daca generatorul de numere aleatoare al muncilor (GNAM) produce numere aleatoare (NA) uniform distribuite pe perioada generatorului. Nu stiu ce GNAM foloseste jocul, dar presupun ca il foloseste pe cel built-in in Java, care, conform specificatiei, genereaza numere aleatoare aproximativ uniform distribuite.
Pentru a primi un obiect (similar pentru produse, tintirea si ferirea unei lovituri in dueluri si batalii de fort), NA curent trebuie sa fie mai mic sau egal cu “sansa” de a primi obiecte diminuata cu motivatia:
NA(i) <= Motiv * Sansa
De exemplu, la 2 ore, NA(i) trebuie sa fie mai mic sau egal cu 0.94*22.8=21.432.
--------------------------------------------------------------
Explicatiile de mai jos presupun ca limbajul de programare al jocului este Java si ca GNA-ul este cel built-in. Oricum, presupunerile nu conteaza, ci principiul, care e acelasi pentru orice limbaj si GNA.
GNA-ul Java este un pseudo-random number generator (PRNG) care foloseste o formula matematica de recurenta ce genereaza un sir de 2^48 numere diferite situate in intervalul [0,1), care, chipurile, sint random. Numerele nu sint chiar random, deoarece sirul de numere se repeta exact in aceeasi succesiune de numere dupa parcurgerea celor 2^48 numere (perioada sirului), adica sirul o ia de la capat. Mai mult, daca stii seed-ul, poti sti exact unde anume te afli in sir si poti sti exact care e urmatorul numar generat de PRNG. De aceea generatorul se numeste “pseudo”.
Formula matematica de recurenta este:
NA(i+1) = (0x5DEECE66DL * NA(i) + 0xBL) mod(2^48)
Unde NA(i+1) este urmatorul numar random, NA(i) este numarul random curent, 0x5DEECE66DL si 0xBL sint numere (cine e interesat le gaseste pe internet), mod(2^48) este numarul de impartit. Pentru primul NA din sir NA(1), NA(0) este seed-ul GNA, care poate primi valori date de utilizator/programator sau poate fi clock-ul calculatorului. Seed-ul stabileste pozitia de unde incepi sa parcurgi sirul de numere aleatoare.
Java are o intreaga clasa de Random, nu stiu ce functii sint folosite in joc, dar principiul este cel care conteaza, respectiv ca GNA-ul genereaza numere aleatoare aproximativ uniform distribuite in intervalul [0,1). Pentru usurarea intelegerii, sa presupunem ca GNA-ul genereaza 1 milion de numere aleatoare (si nu 2^48 numere), uniform ditribuite intre 0 si 1. Numerele aleatoare generate se inmultesc cu 100 si rezulta numere aleatoare in intervalul [0,100). Deoarece cele 1 milion de numere sint uniform distribuite, inseamna ca in fiecare interval de 1 unitate (ex. intre 11 si 12, intre 25 si 26 etc.) avem:
1 milion numere / 100 unitati = 10000 numere diferite
Asta inseamna ca la 2 ore avem 22.8*10000=228000 de numere mai mici sau egale cu 22.8. Sansa ca NA sa fie fie mai mic sau egal cu 22.8 este (formula probabilitatii):
P = Numar reusite (cazuri favorabile) / Numar total de cazuri (incercari) = 228000 / 1000000 = 0.228 sau 22.8%.
In acest caz, si numai in acest caz, respectiv daca GAN-ul genereaza numere aleatoare uniform distribuite, “sansa” la 2 ore este egala cu sansa probabilistica, si deci numarul 22.8 are sens sa fie numit sansa. Daca GNA-ul genereaza numere care nu sint uniform distribuite, atunci numarul 22.8 nu mai are sens sa fie numit “sansa” sau procent.
Ce nu-mi este clar, si nici nu am reusit sa gasesc explicitat pe internet, este daca GNA-ul Java este “dublu uniform distribuit”. Adica stiu ca genereaza aproximativ acelasi numar de numere aleatoare pentru fiecare unitate (intre 10-11, 33-34 etc.) dar nu stiu daca cele 10000 de numere intre 10-11 sint uniform distribuite in sir sau sint concentrate de exemplu in a doua jumatate a sirului. Totusi, din specificatia testelor la care sint supuse GNA-urile diferitelor limbaje de programare/softwares, cu putina matematica pe care o stiu, ar rezulta ca GNA-ul Java este “dublu uniform distribuit” (the birthday spacing test).
--------------------------------------------
Indiferent de limbajul de programare al jocului, daca GNA-ul pentru munci este uniform distribuit, rezulta ca nu exista jucatori norocosi si jucatori ghinionisti. Toti jucatorii au aceleasi sanse. Norocul si ghinionul sint modelate de alti factori utilizati in joc. Conditia NA(i) <= Motiv * Sansa este a treia conditie a norocului. Prima este rata de drop a jucatorului, a doua este valoarea soldului, a patra sint valorile X si Y (tipul de munci efectuate si … nu spun ce), iar ultima sint banii cash+cont bancar pe care ii are jucatorul.
Inca sint in teste cu norocul, mai am inca vreo 5-6 teste de facut, dar pina acum am observat o tendinta clara in ceea ce priveste norocul, iar teoria mea despre noroc se confirma destul de bine. Chiar daca teoria e gresita, tendintele de influenta ale diferitilor factori sint clare.