Oppure

Loading
19/06/13 20:59
Aangelus
Salve a tutti ho un problema con il generatore di numeri casuali (o pseudocasuali), scrivendo poche righe per simulare il lancio di una moneta mi sono imbattuto in comportamenti strani dei miei 3 computer. cioè nel Pc ho simulato milioni di volte avendo come risultato uno sbilanciamento delle statistiche avendo più teste rimanendo in differenza delle due uscite sempre dalla stessa parte. Tutte le uscite dei numeri sono registrate in un database
che tiene conto delle differenze delle due uscite e lo scarto si attiene intorno alle centinaia, mentre sul notebook pende sempre da una parte costantemente con differenza di circa 400. Mentre nel computer che uso io funziona benissimo nel senso che si alternano le differenze. Mi chiedevo se il problema fosse il sistema operativo nei primi due XP mentre quello che uso è VISTA?

Dim Numero as double
Dim Pari as double
Dim Dispari as double
Dim Differenza as double

Randomize
Numero = Fix(Rnd * 2)

if Numero = 0 then
Pari=Pari+1
Elseif Numero =1 then
Dispari=Dispari+1
End if
Differenza = Pari -Dispari
Ultima modifica effettuata da Aangelus 20/06/13 22:13
aaa
20/06/13 3:50
pierotofy
Postaci il sorgente completo, altrimenti si puo' solo ipotizzare.
Il mio blog: piero.dev
21/06/13 20:40
Aangelus
Postato originariamente da Aangelus:

Salve a tutti ho un problema con il generatore di numeri casuali (o pseudocasuali), scrivendo poche righe per simulare il lancio di una moneta mi sono imbattuto in comportamenti strani dei miei 3 computer. cioè nel Pc ho simulato milioni di volte avendo come risultato uno sbilanciamento delle statistiche avendo più teste rimanendo in differenza delle due uscite sempre dalla stessa parte. Tutte le uscite dei numeri sono registrate in un database
che tiene conto delle differenze delle due uscite e lo scarto si attiene intorno alle centinaia, mentre sul notebook pende sempre da una parte costantemente con differenza di circa 400. Mentre nel computer che uso io funziona benissimo nel senso che si alternano le differenze. Mi chiedevo se il problema fosse il sistema operativo nei primi due XP mentre quello che uso è VISTA?

Dim Numero as double
Dim Pari as double
Dim Dispari as double
Dim Differenza as double

Randomize
Numero = Fix(Rnd * 2)

if Numero = 0 then
Pari=Pari+1
Elseif Numero =1 then
Dispari=Dispari+1
End if
Differenza = Pari -Dispari


Ho inserito l'altra parte di codice che mi chiedevi, suggerimenti ????
aaa
01/07/13 12:38
GrG
mmm... l'unica osservazione che posso fare è che non c'è bisogno di usare la funzione Fix()... alternativamente puoi dichiarare Numero come una variabile intera e usare:
Numero = Rnd * 1

Ci sarà una conversione implicita da double a intero con approssimazione quindi Numero sarà (in maniera equivalente a prima) o 0 oppure 1

Puoi provare a cambiare il codice in questo modo alternativo, ma non credo che il risultato cambierà..

Non so come mai hai questo sbilanciamento.. mi ricordo che una volta provai a fare una cosa simile alla tua.. proprio perchè in realtà Rnd genera numeri pseudo-casuali però mi pare di ricordare che più o meno funzionasse bene. Non credo sia un problema di sistema operativo dato che, in teoria, l'algoritmo per generare numeri casuali dovrebbe essere molto simile, a maggior ragione per il fatto che sono tutti sistemi Microsoft
aaa
28/07/13 1:02
Aangelus
Ti ringrazio per avermi detto la tua
aaa