here you go


所有跟贴·加跟贴·新语丝读书论坛

送交者: qtl 于 2009-06-08, 13:52:58:

回答: 您有没有空在这里列一下抽奖得车的问题 由 foresight 于 2009-06-08, 13:15:54:

#include<iostream>
#include<gsl/gsl_rng.h> //Compile option -lgls -lgslcblas

using namespace std;

int main(void){
const int nn=1e6;
int car, man, hst;
double unchange(0), change(0);

//Random number generator related, gsl is used below
int seed(time(0));
const gsl_rng_type *T;
gsl_rng *r;

gsl_rng_env_setup();
T = gsl_rng_default; //default is mt19937
r = gsl_rng_alloc(T);
gsl_rng_set(r,seed);

for(int i=0; i<nn; ++i){
car=gsl_rng_uniform(r)*3; // car is put here
man=gsl_rng_uniform(r)*3; // the man chose one door
if(man==car) ++unchange; //will be 1/3 anyway if the man sticks

//now the host open one, it must be different from man
hst=man;
while(hst==man) hst=gsl_rng_uniform(r)*3;

if(hst!=car) //if the host has bad luck
// then the man changes his mind
if(car!=man)++change; // he is lucky only if car!=man
}

change/=nn;
unchange/=nn;
cout<<change<<endl<<unchange<<endl;
return 0;
}

The results are both 1/3




所有跟贴:


加跟贴

笔名: 密码: 注册笔名请按这里

标题:

内容: (BBCode使用说明