Avatar billede christian Nybegynder
23. oktober 2002 - 11:01 Der er 8 kommentarer og
1 løsning

Rnd ikke så random

Kan det virkelig passe at random ikke er så random som man går og tror?

Jeg har denne funktion:
function randomNumbers(number)
    for i = 0 to number
        temp = (Rnd-1)
        randomize()
        randomNumbers = randomNumbers & int(10 * rnd)
    next
end function

Hvis jeg udfører denne med number = 10
1000 gange så får jeg kun cirka 950 forskellige.

Grunden til at jeg udfører: temp = (Rnd-1)
er at det skulle hjælpe.
Avatar billede eagleeye Praktikant
23. oktober 2002 - 11:07 #1
Hvis du laver Rnd før randomize vil temp havde samme værdi:

temp = (Rnd-1)


Prøv med:

function randomNumbers(number)
    for i = 0 to number
        randomize timer
        randomNumbers = randomNumbers & int(10 * rnd)
    next
end function
Avatar billede tubber Juniormester
23. oktober 2002 - 11:08 #2
prøv med temp = (Rnd+1)

den starter med 0 og tæller til 999
sætter du -1 ind så går den fra -1 til 998
det er måske ikke så heldigt.....
Avatar billede eagleeye Praktikant
23. oktober 2002 - 11:12 #3
hvis på med

int(10 * rnd)

Får du et heltal fra og med 0 og til og med 9 !!

Så hvis du tæller 10 som et tal er det faktsik to tal !!!
Avatar billede eagleeye Praktikant
23. oktober 2002 - 11:13 #4
hvis = husk

Så hvis du vil havde tal fra og med 1 til og med 10 så skal du ligge en til:

randomNumbers = randomNumbers & int(1 + 10 * rnd)
Avatar billede tubber Juniormester
23. oktober 2002 - 11:17 #5
eagleeye:
er der ikke noget med at VB script ikke regner med de korekte regneregler ?

Jeg mener den regner fra en ende af, så når den har regnet int(1+10*rnd) kommer den frem til int(11*rnd) ???

Jeg mener han bør gøre sådan her : int((10*rnd)+1)....

/Tubber
Avatar billede eagleeye Praktikant
23. oktober 2002 - 11:22 #6
Det kan jeg på inden måde forstille mig den regner forkert, men ok for en sikkerheds skyld kan man da sææte () omkring:

randomNumbers = randomNumbers & int(1 + (10 * rnd))
Avatar billede tubber Juniormester
23. oktober 2002 - 11:26 #7
Mener jeg er stødt på det problem i Visual Basic - og det er jo samme sprog som ASP.....
og jeg ved den fucker op i det i Excell.....

Mon ikke det er samme regneregler i alle MS produkter ?
Avatar billede christian Nybegynder
23. oktober 2002 - 11:29 #8
Jeg bruger random til noget aktiverings/redigerings kode til nyhedsbrev etc.
Så en url, kommer til at hedde rediger.asp?kode=1452148795

random funktion skal tage et tal mellem 0 og 9 det virker fint (eagleeye)

At jeg prøver med 1000 er bare tilfældigt

Grunden til at jeg bruger (Rnd - 1) er fordi der står i en vbs chm fil:
Note  To repeat sequences of random numbers, call Rnd with a negative argument immediately before using Randomize with a numeric argument. Using Randomize with the same value for number does not repeat the previous sequence.

Til nye sites jeg laver vil jeg også indkludere e-mail i querystring
Til dem hvor "fejlen" er nu, er det fikset ved at tilføje noget dato/tid

Jeg tester nogle af de forskellige forslag senere i dag
Avatar billede christian Nybegynder
15. januar 2003 - 19:45 #9
Lukker spørgsmål
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