Witam. Programik napisany bardzo mocno z nudów. Nie mogłem zasnąć. ;)
Chodziło mi o sprawdzenie jak długa potrafi być seria czerwonych grając w ruletkę. Potem program trochę się rozwinął, efekt poniżej:
#include "stdafx.h"
#include <iostream>
#include <time.h>
using std::cout;
unsigned short int symulacja()
{
bool los=rand()%2;
unsigned short int licz = 1;
while(los)
{
los=rand()%2;
licz++;
};
return licz;
}
int _tmain(int argc, _TCHAR* argv[])
{
srand(time(NULL));
static int n=20;
unsigned int *tab= new unsigned int[n];
unsigned long int licz_prob=0;
for(int i=0;i<n;i++) tab[i]=0;
do{
tab[symulacja()-1]++;
licz_prob++;
if(licz_prob%100000==0)
{
system("cls");
cout<<"Liczba prob: "<<licz_prob/1000<<"k\n";
for(int i=0;i<n;i++) cout<<i+1<<"\t"<<tab[i]<<"\n";
}
}while (tab[9]<=100000);
system("cls");
cout<<"Liczba prob: "<<licz_prob/1000<<"k\n";
for(int i=0;i<n;i++) cout<<i+1<<"\t"<<tab[i]<<"\n";
system("PAUSE");
return 0;
}
Dziwią mnie mocno wyniki. Oto one:
Liczba prob: 107437k
1 53723587
2 26854335
3 13395144
4 6754130
5 3326253
6 1686872
7 855750
8 440987
9 209834
10 100000
11 44264
12 24590
13 8197
14 8196
15 1639
16 3278
17 0
18 0
19 0
20 0
Press any key to continue . . .
Prób było kilka, za każdym razem zwiększałem warunek (ilość serii, w których czerwone wypadają za 10 razem). Za każdym razem były zbliżone proporcje (to akurat mnie nie dziwi) i za każdym razem:
- Liczba serii w których czerwone wypały za 13 i 14 razem była bardzo mocno zbliżona. Prawdopodobieństwo wskazuje na to, że szansa na to, że czerwone wypadną 14 razy pod rząd jest o połowę mniejsze niż, że wypadną 13 razy. Ta zasada jest widoczna całkiem nieźle do serii 12 czerwonych. Potem zaczynają się dziać dziwne rzeczy.
- Liczba serii w których czerwone wypadają 15 razy pod rząd jest dużo niższa niż w teorii powinna być. We wklejonym przykładzie jeśli liczba serii, w których czerwony wypadły 14 razy wynosi 8196, to 15 razy powinno wynieść około 4000. Czemu wynosi jedynie 1639?
- Liczba serii w których czerwone wypadają 16 razy pod rząd przy każdym uruchomieniu programu była około 2 razy wyższa niż liczba prób w których czerwone wypadają 15 razy pod rząd. To też mi się nie zgadza.
- I ostatnie pytanie. Jakim cudem nie wypadło ani razu 17 lub więcej razy pod rząd czerwone?
PS. Wiem, że w programie jest babol pt "Zwiększasz wartość komórki 20elementowej tabeli, a jeśli wynik symulacji będzie wynosić ponad 20 to wyskoczysz poza pamięć." Wiem, programik był mniej rozbudowany, a szansa na to wynosi jakieś 1/(2^20), więc byłem gotów zaryzykować przy programiku pisanym 4fun.
Jak komuś będzie chciało się pomyśleć i mnie oświecić będę wdzięczny.
Pozdrawiam