redratio1
BAN USERUsing 50%/50% distribution on a bit generator using random5
#include <iostream>
#include <cstdlib>
using namespace std;
int random5() {
return (rand()%5)+1;
}
int random7() {
int val=0;
int retval=0;
int bit[3]={0,0,0};
for(int i=0;i<3;i++){
while(true){
val=random5();
if(val>3){
bit[i]=1;
break;
}else if(val<3){
break;
}
}
}
for(int i=0;i<3;i++){
if(bit[i])retval++;
if(i<2)retval<<=1;
}
return retval+1;
}
int main(int argv, char **argc){
float sum=0.;
int hist[7]={0,0,0,0,0,0,0};
for(int i=0;i<100000;i++){
hist[random7()-1]++;
}
for(int i=0;i<7;i++)sum+=(float)hist[i];
for(int i=0;i<7;i++){
cout << 100.0*(hist[i]/sum) << "\% for " << i+1 << endl;
}
exit(EXIT_SUCCESS);
}
- redratio1 May 24, 2012