Gå til innhold

Anbefalte innlegg

Må du gjøre noe spesielt for at random-generatorene skal ta random tall. Når jeg lager en random generator kommer den samme tallrekken hver gang og da er halve meningen med en random generator vekke, er det noen måte og få den helt random på.

Lenke til kommentar
Videoannonse
Annonse

Quote:


Den 2002-08-31 19:00, kilogram skrev:

Kjør Randomize
ein
gong, eller sett RandSeed-variabelen. Slå opp i hjelp på Randomize for meir informasjon.


 

Nå er ikke jeg særlig godt kjent med Delphi. Men det vanlige er vel å bruke en eller annen funksjon av tiden som "seed". Om det ikke gjøres eksplisitt, så er det nok en funksjon som gjør det "bak kulissene".

 

LeD

Lenke til kommentar

Quote:


LeD skrev (2002-09-02 21:48):

Nå er ikke jeg særlig godt kjent med Delphi. Men det vanlige er vel å bruke en eller annen funksjon av tiden som "seed". Om det ikke gjøres eksplisitt, så er det nok en funksjon som gjør det "bak kulissene".


LeD


 

Vel, dette er noko som sitt igjen frå Turbo Pascal-dagane mine, då det vart sagt at ein berre skulle kalla Randomize ein gong, grunna at den ville sette RandSeed attende til grunnstillinga om ein gjorde dette to, fire eller seks gongar. Uansett, skal ikkje sei det sikkert om det framleis er slik i Delphi, fordi det har eg ikkje testa.

 

mvh.,

Vegard

Lenke til kommentar
  • 3 måneder senere...

En random generator er en funksjon som returnerer et mer eller mindre tilfeldig tall. Dette 'tilfeldige' tallet gjerne en konsekvens av et annet tall.

 

Ta f.eks. en av de første algoritmene for tilfeldig tall-generatorer: 'Middle-Square'-metoden. (John von Neumann, 1946)

 

Den tar et N-siffret tall, ganger det med seg selv og danner da et nytt 2*N-siffret tall (med 0 eller flere nuller først). Ditt nye 'tilfeldige' tall vil være de N midterste siffrene i det nye tallet.

 

Et eksempel: Hvis vi starter med tallet 1234 får vi følgende tallrekke:

 

1234 -> (1234^2=1|52271|6) -> 5227

5227 -> (5227^2=27|3215|29) -> 3215

 

osv.

 

Heldig vis bruker Delphi en helt annen algoritme i sin tall-generator, nemmelig 'Linear Congruential Method'. Den benytter en funksjon som følger:

 

Xn+1 = (aXn + C) mod m

 

Man starter med en gitt m, a, c og Xo og kan ut fra disse tallene og formelen over generere en tallrekke med 'tilfeldige' tall.

 

Av disse fire startverdiene er det kun Xo vi kan bestemme selv. Endten setter vi den gjennom den globale variablen 'RandSeed', eller vi kan bruke Randomize for å sette den til en verdi gitt utfra system klokken.

 

Og det skulle vel være nok om random( ) funksjonen for denne gang...

 

-Vegar

 

PS: Les 'The Tomes of Delphi: Algorithms and Data Structures' - en soleklar 'må ha' delphi-bok!

Lenke til kommentar

Quote:


Den 2002-09-02 20:19, skrev vidiware:

Det randomgreiene er spacet... hei rusar...

hvordan kan du lage en skikkelig?


 

Det er faktisk umulig å lage en "orntlig" random generator på pc. Pc'en må bassere sine tall på noe, og da blir det ikke random.

 

Dette er f. eks. grunnen til at lotto fortsatt trekkes med gode gamle analoge kuler :wink:

 

Er du interesssert i slikt så kan du lese om kaosteorien o.l. Ganske interessant lesestoff.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...