Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di digitm
    Registrato dal
    May 2002
    Messaggi
    412

    random... ma non troppo

    Ciao ragazzi volevo testare lo script per creare numeri random, così ho simulato 1.000.000 di prove per vedere se, per la legge dei grandi numeri, le percentuali finali, si equivalessero (ovvero tutti al 20% circa), invece nonostante i diversi refresh, i valori 1 e 5 sono al 12% ed il 2, 3 e 4 al 25%, come mai???

    Ecco lo script...

    Conta = 5
    randomize()

    a=0
    b=0
    c=0
    d=0
    e=0
    for i=1 to 1000000

    numerocasuale=CInt((conta-1)*Rnd() + 1 )

    if numerocasuale=1 then
    a=a+1
    end if

    if numerocasuale=2 then
    b=b+1
    end if

    if numerocasuale=3 then
    c=c+1
    end if

    if numerocasuale=4 then
    d=d+1
    end if

    if numerocasuale=5 then
    e=e+1
    end if

    next

    somma=a+b+c+d+e
    p1=int(a/somma*100)
    p2=int(b/somma*100)
    p3=int(c/somma*100)
    p4=int(d/somma*100)
    p5=int(e/somma*100)
    response.write "1: "&a&" ("&p1&"%)"
    response.write "
    2: "&b&" ("&p2&"%)"
    response.write "
    3: "&c&" ("&p3&"%)"
    response.write "
    4: "&d&" ("&p4&"%)"
    response.write "
    5: "&e&" ("&p5&"%)"
    response.end

  2. #2
    Utente di HTML.it L'avatar di digitm
    Registrato dal
    May 2002
    Messaggi
    412
    mi rispondo da solo. E' solo un proble di arrotondamenti... erroneamente usavo:

    numerocasuale=CInt((conta-1)*Rnd() + 1 )

    quindi per numeri da 1 a 1,49 mi restituiva 1, mentre da 1,5 a 2,49 il valore 2, generando quindi una doppia possibilità di uscita rispetto all'uno ed al 5...

    Ho risolto così:
    numerocasuale=Int((conta)*Rnd() + 1 )


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.