Oprettet lør. d. 15. januar 2005 kl. 23:22:44

mrfunder
mrfunder (9.795 point. Point ude: 2.050)

En speciel random funktion

Mit problem er at jeg skal have lavet et "tre" cifret tal f.eks 4.52
Altid ét tal, og så to cifre efter mit komma. (men selvfølelig kommer der ikke 2 cifre, hvis mit resultat rammer på præcis 4!)

$status = 1;

Hvis status = 1 skal muligheden stige med 0.50, for hver gang status er én højere skal den stige med 0.50.
Jeg har et tal fra 0 - 5000.


Altså jeg skal bruge en "random-funktion" som giver mig et random tal.
Der er et par ting som skal spille ind.

1. Tallet fra 0 - 5000, hvis tallet er 4000 får jeg selvfølelig et højere tal end var det 200
2. For hver gang status er 1 højere skal muligheden for at tallet blive højere stige med 0.50 (altså ½)
3. Tallet må ikke blive oppe omkring 14 eller sådan noget. Det skal helst holde sig under 7


Forstår i overhovedet hvad det er for en funktion jeg skal have hjælp til!? :P

Skrevet lør. d. 15. januar 2005 kl. 23:31:37| #1

detox
detox (68.932 point)
Næ, ærlig talt. Kan du prøve at beskrive det kort og præcist?

Skrevet lør. d. 15. januar 2005 kl. 23:31:40| #2

arne_v
arne_v (1.005.653 point)
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);

Skrevet lør. d. 15. januar 2005 kl. 23:31:42| #3

jakoba
jakoba (172.327 point)
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 ?

Skrevet lør. d. 15. januar 2005 kl. 23:35:33| #4

mrfunder
mrfunder (9.795 point)
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.

Skrevet lør. d. 15. januar 2005 kl. 23:36:44| #5

arne_v
arne_v (1.005.653 point)
$r = (rand() / getrandmax()) * ($status * 0.5) * ($tal / 5000);

Skrevet lør. d. 15. januar 2005 kl. 23:39:42| #6

mrfunder
mrfunder (9.795 point)
$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 :)

Skrevet lør. d. 15. januar 2005 kl. 23:42:28| #7

arne_v
arne_v (1.005.653 point)
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.

Skrevet søn. d. 16. januar 2005 kl. 00:05:58| #8

mrfunder
mrfunder (9.795 point)
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 :)

Skrevet søn. d. 16. januar 2005 kl. 00:10:05| #9

arne_v
arne_v (1.005.653 point)
En absolut bund ligger du på med f.eks.:

$r = (rand() / getrandmax()) * (1 + $status * 1.7) * ($tal / 5000) + 0.75;

Skrevet søn. d. 16. januar 2005 kl. 00:16:29| #10

mrfunder
mrfunder (9.795 point)
Smid et svar :) Mange tak

Skrevet søn. d. 16. januar 2005 kl. 16:29:19| #11


Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Udtræk af enkelte felter fra bestemte kolonner i mysql

Oprettet den 11. februar 2012 kl. 19.27
hrole giver 30 point for svar | Giv et svar »

Procentregning

Oprettet den 11. februar 2012 kl. 11.26
sevinding giver 60 point for svar | Giv et svar »

Ville ikke tildele at upload det til database eller komme...

Oprettet den 10. februar 2012 kl. 21.23
tobrukDk giver 15 point for svar | Giv et svar »

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Her er fem sjove danske websider du skal kende

Trænger dine lattermuskler til en omgang fitness på dansk? Vi viser vej til fem websider fyldt med humor og vanvittig satire.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Nu kan du snart hente Windows 8

Den nye offentlige betaversion af Windows 8 er klar i denne måned.


Nyheder fra Computerworld

Teaser billede

Måske snart slut med Androids helt store problem

Android-platformen har længe været plaget af et særligt problem. Men måske er problemet nu ved at være elimineret.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger