Den er lavet, så man kan vælge mellem at få de samme sekvens af tilfældige tal, når man kører sit program, eller man kan få en ny sekvens. Det første er rart, når man vil teste et program. Så er det vigtigt at få den samme række af tilfældige tal. Hvis man bruger den anden mulighed (man giver ordren randomize) får man en ny sekvens af tilfældige tal. Det er vist nok baseret på uret i maskinen. Men det tæller jo ikke sekunder, men kører langt hurtigere, og derfor har man ikke det problem, du antyder skulle findes. Tilfældighedsgeneratoren er undersøgt og du kan roligt regne med at de opfører sig som "tilfældige tal".
function generateRandom(intAntalTegn, intRandomType) ' intAntalTegn : number of random characters to be generated ' intRandomType : 0 = int, 1 = chr, 2 = both
select case int(intRandomType) case 0 for x = 1 to intAntalTegn randomize intWildChar = int(rnd * 9) + 1 strRandom = strRandom & intWildChar next case 1 for x = 1 to intAntalTegn randomize intWildChar = int(rnd * 57) + 65 if intWildChar => 91 and intWildChar <= 96 then intWildChar = intWildChar + 8 end if strRandom = strRandom & chr(intWildChar) next case 2 for x = 1 to intAntalTegn randomize intChooser = int(rnd * 2) + 1 select case intChooser case 1 intWildChar = int(rnd * 57) + 65 if intWildChar => 91 and intWildChar <= 96 then intWildChar = intWildChar + 8 end if strRandom = strRandom & chr(intWildChar) case else intWildChar = int(rnd * 9) + 1 strRandom = strRandom & intWildChar end select next end select generateRandom = strRandom end function
---------
Tilsyneladende får jeg altså sammenfaldende id'er ret tit, med 10 tals random...
Mener du noget i stil med 8759768177 Du kan ikke ved blot at se på nogle få kørsler afgøre om det er tilfældigt nok. Hvis man beder en person om at angive en række tilfældige tal, bliver de netop ikke tilfældige. For et menneske vil synes, at der ikke må være 2 8-taller i nærheden af hinanden f.eks.
Det minder jo lidt om fødselsdagsproblemet: Chancen, for at der er mindst 2 personer med samme fødselsdato i en gruppe på 25 personer er større end 50%. Her vælger du 25 gange en tilfældig dato fra 365 forskellige.
Hvor mange gengangere fandt du blandt dine 62000 sæt af 10 tal valgt tilfældigt?
Ups: jeg glemte at regne med nok betydende cifre i det matematikprogram, jeg benyttede til at udregne sandsynligheden. 0,53 skal ændres til 0,17. Hvor mange bogstaver brugte du for at generere unikid?
ja... altså med mindre, der er noget, der ikke spiller max i enten min funktion eller bare randomize() generelt... Men skidt. jeg tror, jeg har noget nu, jeg kan bruge (mit x.x.x.x.unikid system)
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.