PDA

View Full Version : Simulazione lancio della monetina


franco_o
23-08-2004, 18:48
Salve,
sono un appassionato di statistiche ma ho pochissime conoscenze di programmazione; quel poco che so' mi basta ad affemare che quello che sto' per chiedervi non e' molto difficile da fare :D

In particolare mi servirebbe un programma che, simulando il lancio della monetina (con numero di lanci deciso di volta in volta), mi dica il volore massimo delle uscite consecutive (una o l'altra faccia).

Ad esempio al lancio del prog. questo mi chiede: QUANTI LANCI?...Ed io 100.000. Una volta simulato i 100.000 lanci ( che possono non essere visualizzati sullo schermo) il programma mi fa uscire una schermata con scritto: Massimo Valore= 18(ad esempio).

Che sta' a significare che nei 100.000 lanci effettuati il numero di uscite consecutive di una delle due faccie e' stato 18 (puo' anche essere omesso se tale valore sia per la testa o per la croce).

Grazie per l'eventuale risposta.

cipi
23-08-2004, 18:57
Originariamente inviato da franco_o
Salve,
sono un appassionato di statistiche ma ho pochissime conoscenze di programmazione; quel poco che so' mi basta ad affemare che quello che sto' per chiedervi non e' molto difficile da fare :D

In particolare mi servirebbe un programma che, simulando il lancio della monetina (con numero di lanci deciso di volta in volta), mi dica il volore massimo delle uscite consecutive (una o l'altra faccia).

Ad esempio al lancio del prog. questo mi chiede: QUANTI LANCI?...Ed io 100.000. Una volta simulato i 100.000 lanci ( che possono non essere visualizzati sullo schermo) il programma mi fa uscire una schermata con scritto: Massimo Valore= 18(ad esempio).

Che sta' a significare che nei 100.000 lanci effettuati il numero di uscite consecutive di una delle due faccie e' stato 18 (puo' anche essere omesso se tale valore sia per la testa o per la croce).

Grazie per l'eventuale risposta.

Se sei un appassionato di statistica saprai bene allora che i numeri random (perchè questi ti servono) nn cadono dal cielo ma c'è sempre un algoritmo che li crea... Il numero di volte consecutive che un numero casuale è sopra (o sotto) 0.5 (cioè è testa o croce) dipende dall'algoritmo scelto e dal suo seed (seme). Comunque fai così:
[list=1]
prendi MATLAB
generi 100'000 valori casuali con la funzione rand
vedi quanti consecutivamente sono > o < di 0.5
game over
[/list=1]

cipi
23-08-2004, 19:07
a=rand(100000,1);
b=find(a>0.5);
counter=0;
temp=1;
for i=1:length(b)-1,
if b(i+1)==(b(i)+1),
temp=temp+1;
if temp>counter,
counter=temp;
end
else
temp=1;
end
end
fprintf('Massimo Valore= %d\n',counter);

...fatto un po' grezzo ma funzia.... ;)

cipi
25-08-2004, 18:13
ouhh, ma ci sei? Fatto? Capito? http://www.spammers.it/perp/2.gif

Fenomeno85
25-08-2004, 18:42
se vuoi puoi anche farlo con excel :D

~§~ Sempre E Solo Lei ~§~

franco_o
26-08-2004, 10:56
Originariamente inviato da cipi
ouhh, ma ci sei? Fatto? Capito? http://www.spammers.it/perp/2.gif

Ciao,
soltanto stamattina ho ritrovato il programma Mat.lab, e per questo ti rispondo in ritardo ;)

Dunque, ho provato e il tuo codice funziona, pero' i risultati si ripetono a ciclo! :confused:

Nel senso che se lancio piu' volte il codice, questo mi restituisce sempre i seguenti Valori Massimi. : 18;11;14;11;13;12;12 e cosi via.

Questo e' la conferma a cio' che dicevi: sono numeri pseudocasuali e non casuali.

Inoltre tutti i Valori Massimi che escono fuori sono un tantino piu' alti rispetto ad altre prove che ho fatto (funzione random excel; lista di numeri casuali trovata su internet, etc etc). che in genere si fermano a 12/13. La comodita' di scrivere un codice e' dovuta al fatto che le prove sono immediate; viceversa quando adopero altri metodi la procedura e' parecchio piu' lunga.

Avresti qualche altra soluzione?
Ciao e grazie.

cipi
26-08-2004, 11:19
Originariamente inviato da franco_o
Dunque, ho provato e il tuo codice funziona, pero' i risultati si ripetono a ciclo! :confused:

Nel senso che se lancio piu' volte il codice, questo mi restituisce sempre i seguenti Valori Massimi. : 18;11;14;11;13;12;12 e cosi via.

Questo e' la conferma a cio' che dicevi: sono numeri pseudocasuali e non casuali.

Inoltre tutti i Valori Massimi che escono fuori sono un tantino piu' alti rispetto ad altre prove che ho fatto (funzione random excel; lista di numeri casuali trovata su internet, etc etc). che in genere si fermano a 12/13. La comodita' di scrivere un codice e' dovuta al fatto che le prove sono immediate; viceversa quando adopero altri metodi la procedura e' parecchio piu' lunga.

Avresti qualche altra soluzione?
Ciao e grazie.


clear
clc
for k=1:50,
rand('seed',k)
a=rand(100000,1);
b=find(a>0.5);
counter=0;
temp=1;
for i=1:length(b)-1,
if b(i+1)==(b(i)+1),
temp=temp+1;
if temp>counter,
counter=temp;
end
else
temp=1;
end
end
fprintf('Massimo Valore= %d\n',counter);
end


così facendo cambi il seme che genera i numeri casuali... Dovresti ottenere:


Massimo Valore= 16
Massimo Valore= 16
Massimo Valore= 15
Massimo Valore= 17
Massimo Valore= 16
Massimo Valore= 17
Massimo Valore= 15
Massimo Valore= 14
Massimo Valore= 14
Massimo Valore= 14
Massimo Valore= 19
Massimo Valore= 17
Massimo Valore= 13
Massimo Valore= 16
Massimo Valore= 15
Massimo Valore= 13
Massimo Valore= 17
Massimo Valore= 16
Massimo Valore= 17
Massimo Valore= 14
Massimo Valore= 13
Massimo Valore= 16
Massimo Valore= 14
Massimo Valore= 20
Massimo Valore= 16
Massimo Valore= 14
Massimo Valore= 15
Massimo Valore= 18
Massimo Valore= 14
Massimo Valore= 18
Massimo Valore= 15
Massimo Valore= 15
Massimo Valore= 16
Massimo Valore= 14
Massimo Valore= 20
Massimo Valore= 17
Massimo Valore= 20
Massimo Valore= 16
Massimo Valore= 21
Massimo Valore= 17
Massimo Valore= 15
Massimo Valore= 16
Massimo Valore= 16
Massimo Valore= 17
Massimo Valore= 15
Massimo Valore= 14
Massimo Valore= 16
Massimo Valore= 15
Massimo Valore= 15
Massimo Valore= 17



;)

cipi
10-09-2004, 12:55
hai fatto?