Avatar billede mjiw Nybegynder
28. november 2003 - 01:34 Der er 5 kommentarer og
2 løsninger

bedst anvendelse af RANDOMIZE ?

er det "forkert" at udføre RANDOMIZE i f.eks. som her:

Repeat
  Randomize;
  i:=Random(tal)+1;
Until not dublet;

???
Avatar billede dkn Nybegynder
28. november 2003 - 01:36 #1
det er nok at kalde Randomize; een gang
Avatar billede mjiw Nybegynder
28. november 2003 - 01:56 #2
sådan havde jeg også oprindeligt forstået anvendelsen...

men i den konkrete situation ville jeg gøre noget ekstra...

baggrunden for mit spørgsmål er, at der tegner sig et uønsket billede for de tilfældige tal -
når et tal udtrækkes til et tidligere 10'er-interval, så bliver tallet det numerisk næste i rækken -
eksempel : 21
herefter springes der godt mellem andre tal, men når det næste tal udkommer i 20'erne, så bliver det 22, 23 o.s.v.
kan det have noget med program-konstruktionen at gøre, eller kan det være bestemt af windows-versionen ?
Avatar billede dkn Nybegynder
28. november 2003 - 02:00 #3
lyder lidt mærkeligt hvis det skulle ske, men du kan evt køre random flere gange i streg.

Random(Random(10))

Men det skulle altså ikke være nødvendigt, håber ikke at det kommer til at gå udover hastigheden
Avatar billede arne_v Ekspert
28. november 2003 - 07:56 #4
1)  Du må kun kalde Randomize en gang, hvis du kalder Randomize for hver
    gang du kalder Random, så bliver tallene *mindre* tilfældige

2)  Jeg kan ikke genskabe dit problem med Randomize udenfor.

3)  Generatorer af pseudo tilfældige tal er et interessant område. Der
    findes ude tvivl bedre algoritmer end den indbyggede i Delphi.

4)  Hvis du skal bruge små tal f.eks.:
      Random(100)
    kan man sommetider forbedre tallene ved at bruge:
      Random(1000) div 10
Avatar billede hreiff Nybegynder
28. november 2003 - 14:01 #5
Du bør kun kalde Randomize 1 gang, f.eks i OnCreate.

Randomize laver et tilfældigt starttal i en serie, normalt baseret på et tidspunkt. Hvis løkken er hurtig vil ramdomize returnere det samme starttal hver gang, og dermed vil du også få det samme tal hele tiden, derfor 21, 22, 23 (fordi du lægger 1 til)
Avatar billede arne_v Ekspert
28. november 2003 - 15:13 #6
Det er until not dublet ikke +1 der giver effekten med +1.
Avatar billede mjiw Nybegynder
28. november 2003 - 17:35 #7
tak for vurderingerne ...

hreiff>>>
din beskrivelse kunne godt være svaret på mit problem - det vil jeg få afprøvet ...
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