#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