Avatar billede junl Nybegynder
24. oktober 2002 - 22:20 Der er 4 kommentarer og
3 løsninger

Random

Jeg er halv newbie og påtænker, at lave et "lotto" program.

Hvordan fungerer random funktionen egentlig? Ikke noget med en copy/paste kode. Jeg kan selv skrive programmet.

Men sådan i teorien. Hvordan er det med forekomster osv? Er random rigtig random?

Jeg vil altså gerne have en forklaring på selve funktionen. Jeg gider ikke sidde og rode med noget jeg ikke aner hvad er eller ved hvordan virker.

På forhånd tak.
Avatar billede erikjacobsen Ekspert
24. oktober 2002 - 22:22 #1
random er pseudo-random - den vil gentage sig på et tidspunkt,
og den overholder et (kompliceret) mønster.
Det skulle ikke betyde noget for et simpelt lotto program
Avatar billede arne_v Ekspert
24. oktober 2002 - 22:38 #2
En random generator genererer såkaldte pseudo-random
tal.

Du sætter en seed (srand) og kalder derefter
random et antal gange.

Forestil dig alle tal mellem 0 og 2 milliarder
lagt ud i en tilfældig cirkel.

Dit valg af seed bestemmer hvor du går ind i cirklen.

Og ethvert kald af random tager bare næste tal.

Så ja - den vil gentage sig selv. For primitive
random generatorer typisk efter 2 eller 4 milliarder.

Jeg tror ikke at du får problemer med dit lotto-spil.
En ægte random generator bruger noget udefrakommende
fysisk: tid mellem dine taste-tryk, foto af lys,
radioaktiv spaltning etc..
Avatar billede arne_v Ekspert
24. oktober 2002 - 22:43 #3
Som et eksempel på en lille algoritme, så kan du
forestille dig formlen:

x(n+1) = (5 * x(n) + 1) MOD 16

den svarer til cirklen:

1 6 15 12 13 2 11 0
Avatar billede doc404 Novice
25. oktober 2002 - 02:32 #4
Lidt mere praktisk...

Hvis du 'kun' kalder Random får du samme serie, hver gang du starter dit program.

Placer en Randomize før du kalder Random og Delphi benytter tid/dato til at lave en seed, så du får forskellige serier, hver gang du starter dit program.
Avatar billede arne_v Ekspert
25. oktober 2002 - 07:36 #5
Man får *atid* samme serie.

Man starter bare et forskelligt sted i serien
alt efter start seeden.
Avatar billede lanstorp Nybegynder
25. oktober 2002 - 08:32 #6
Avatar billede junl Nybegynder
26. oktober 2002 - 13:14 #7
Tak for svarene - jeg blev lidt klogere.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester