Næ, ærlig talt. Kan du prøve at beskrive det kort og præcist?
Jeg er ikke sikker på at jeg forstår dig, men måske noget a la:
$r = (rand() / getrandmax()) * (1 + $status * 0.5) * ($tal / 5000);
Ja, men din regel nummer 2 er uklar
2. For hver gang status er 1 højere skal muligheden for at tallet blive højere stige med 0.50 (altså ½)
selv med status==0 er chancen for et tal større end fx 1,50 større end ½, hvis vi lægger ½ til den sandsynlighed er vi bomsikre, så det udtrukne random nummer slet ikke kan være mindre end 7/2 (3,5). er du sikker på det er det du mener ?
Der er kun 6 forskellige status'er:
1,2,3,4,5,6. Intet med 0!
1 = 0.5
2 = 1
3 = 1.5
4 = 2
5 = 2.5
6 = 3
Altså hvis status nu er 6, så skal resultatet godt kunne blive 2? Men chancen for at den er større stiger bare med 3.
$r = (rand() / getrandmax()) * ($status * 0.5) * ($tal / 5000);
$status = 6;
$tal = 4002;
$r = (rand() / getrandmax()) * (1 + $status * 1.7) * ($tal / 5000);
Det har jeg rettet den til.
Men én lille ting mere :)
Er det muligt at gøre sådan hvis man nu har $tal over 2000, så kommer den ikke under 1. Og tal over 3000 så kommer den ikke under 2. $tal over 4000 kommer dne ikke under 3. Og tal under 5000, så kommer den ikke under 4.. - Håber det kan lade sig gøre :)
Jeg forstår ikke helt de 1.7 men skidt pyt.
(rand() / getrandmax()) vil altid ligge mellem 0.0 og 1.0
du kender selv (1 + $status * 1.7)
så kan du selv justere de 5000 til at give den ønskede opførsel.
De 1.7 er bare sådan tallene bliver lidt højere :)
- Er der mulighed for at lægge en "bund" på?
Er det muligt at gøre sådan hvis man nu har $tal over 2000, så kommer den ikke under 1. Og tal over 3000 så kommer den ikke under 2. $tal over 4000 kommer dne ikke under 3. Og tal under 5000, så kommer den ikke under 4.. - Håber det kan lade sig gøre :)
En absolut bund ligger du på med f.eks.:
$r = (rand() / getrandmax()) * (1 + $status * 1.7) * ($tal / 5000) + 0.75;
Smid et svar :) Mange tak