P: n/a

I wrote a program that shows some incredibly curious probabilities. It
is a simple game where you guess a number between 0 and 2 that the
computer thinks up. What is origonal about this game is the computer
tells you before hand if you got the number right and you can decide if
you want to play or not. The computer keeps track of all your wins,
all your losses, and as is possible all of your didn't wins but didn't
loses. What is strange about this program is that the total
probability of you winning the game can be undefined if you never lose,
but play a number of undefined games where you haven't won or lost.
Please tell me what is going on here, because it is very curious.
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int gen_random(long int M) {
double r;
double x;
int y;
int count;
r = ( (double)rand() / ((double)(RAND_MAX)+(double)(1)) );
x = (r * M);
y = (int) x;
return(y);
}
int
main(int argc, char *argv[]) {
int N = ((argc == 2) ? atoi(argv[1]) : 1);
int result = 0;
srand(N); /*initialize random number generator*/
int win=0;
int notwin=0;
for(int cnt=0; cnt<10; cnt++){
int play=0;
int R=0;
R=gen_random(3);
int guess=0;
printf("Guess my number, its between 0 and 2: ");
scanf("%d",&guess);
printf("My number was %d, do you still want to play (1/0)? ", R);
scanf("%d", &play);
if(R==guess && play==1){
win++;
printf("You won, your total wins are: %d\n",win);
}
if(R==guess && play==0){
printf("You don't want to play? Your total losses are %d\n",notwin);
notwin=notwin;
}
if(R!=guess && play==0){
notwin=notwin;
printf("Good decision, your total losses are %d\n",notwin);
}
if(R!=guess && play==1){
notwin++;
printf("You want to play? Your total losses are %d\n",notwin);
}
}
printf("Wins: %d\n",win);
printf("Didn't win: %d\n",notwin);
printf("Wins / Didn't Win: %d\n", win/notwin);
return(0);
}  
Share this Question
P: n/a

On 10 Apr 2006 15:06:57 0700, in comp.lang.c , Co********@gmail.com
wrote: I wrote a program that shows some incredibly curious probabilities. It is a simple game where you guess a number between 0 and 2
Lets assume you mean "inclusive", since there's only one whole number
between nought and two..... :)
What is strange about this program is that the total probability of you winning the game can be undefined if you never lose, but play a number of undefined games where you haven't won or lost.
No, the probability is always the same  assuming you have a decent
RNG. The percentage of times you have already won is a random variable
however. Is that what you mean?
Please tell me what is going on here, because it is very curious.
I have a feeling you have a misunderstanding of the statistics and/or
algorithm.
#include <math.h> #include <stdio.h> #include <stdlib.h>
int gen_random(long int M) {
double r; double x; int y; int count;
not used
r = ( (double)rand() / ((double)(RAND_MAX)+(double)(1)) ); x = (r * M); y = (int) x; return(y); }
int main(int argc, char *argv[]) { int N = ((argc == 2) ? atoi(argv[1]) : 1); int result = 0; srand(N); /*initialize random number generator*/
you can't have executable statements before variable declaraations in
in C89. You are probably using a C++ compiler int win=0; int notwin=0; for(int cnt=0; cnt<10; cnt++){ int play=0; int R=0; R=gen_random(3);
int guess=0; printf("Guess my number, its between 0 and 2: "); scanf("%d",&guess);
don't use scanf to read user input. Its a bad choice. Read the FAQ for
some suggestions.
Mark McIntyre

"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it."
Brian Kernighan  
P: n/a
 Co********@gmail.com wrote: I wrote a program that shows some incredibly curious probabilities. It is a simple game where you guess a number between 0 and 2 that the computer thinks up. What is origonal about this game is the computer tells you before hand if you got the number right and you can decide if you want to play or not. The computer keeps track of all your wins, all your losses, and as is possible all of your didn't wins but didn't loses. What is strange about this program is that the total probability of you winning the game can be undefined if you never lose,
That's incorrect.
but play a number of undefined games where you haven't won or lost.
Please tell me what is going on here, because it is very curious.
Probability is
successfull outcomes

total outcomes
The "total outcomes", which you are not tracking, increments every
time you decide to play. And seperately, the wins and losses should
be tallied. You CANNOT have 1 win and 0 outcomes which is where
the confusion is.
And it is wrong to figure probability by dividing the wins by the
losses, regardless of whether or not you get a divide by
0 error.
In this sample, where I chose to play regardless of whether I won
or not, the correct probability would be 6/10, not 6/4 (which you
see as 1 instead of 1.5 because you printed the ratio as an integer).
Guess my number, its between 0 and 2: 1
My number was 2, do you still want to play (1/0)? 1
You want to play? Your total losses are 1
Guess my number, its between 0 and 2: 1
My number was 1, do you still want to play (1/0)? 1
You won, your total wins are: 1
Guess my number, its between 0 and 2: 1
My number was 1, do you still want to play (1/0)? 1
You won, your total wins are: 2
Guess my number, its between 0 and 2: 1
My number was 1, do you still want to play (1/0)? 1
You won, your total wins are: 3
Guess my number, its between 0 and 2: 1
My number was 1, do you still want to play (1/0)? 1
You won, your total wins are: 4
Guess my number, its between 0 and 2: 1
My number was 0, do you still want to play (1/0)? 1
You want to play? Your total losses are 2
Guess my number, its between 0 and 2: 1
My number was 0, do you still want to play (1/0)? 1
You want to play? Your total losses are 3
Guess my number, its between 0 and 2: 1
My number was 1, do you still want to play (1/0)? 1
You won, your total wins are: 5
Guess my number, its between 0 and 2: 1
My number was 1, do you still want to play (1/0)? 1
You won, your total wins are: 6
Guess my number, its between 0 and 2: 1
My number was 2, do you still want to play (1/0)? 1
You want to play? Your total losses are 4
Wins: 6
Didn't win: 4
Wins / Didn't Win: 1
In this run, I chose to play only when I won. Yes, there is a 0
in the "didn't win" variable, but you aren't supposed to divide
by that. The total outcomes should be the count of the times I
played, which was 6. The correct probability would then be
6/6 which doesn't give you a divide by 0 error. The number
of times I lost was 0 (because I chose not to play) and it's
probability is 0/6 which still does not give you a divide by 0
error.
Guess my number, its between 0 and 2: 1
My number was 2, do you still want to play (1/0)? 0
Good decision, your total losses are 0
Guess my number, its between 0 and 2: 1
My number was 1, do you still want to play (1/0)? 1
You won, your total wins are: 1
Guess my number, its between 0 and 2: 1
My number was 1, do you still want to play (1/0)? 1
You won, your total wins are: 2
Guess my number, its between 0 and 2: 1
My number was 1, do you still want to play (1/0)? 1
You won, your total wins are: 3
Guess my number, its between 0 and 2: 1
My number was 1, do you still want to play (1/0)? 1
You won, your total wins are: 4
Guess my number, its between 0 and 2: 1
My number was 0, do you still want to play (1/0)? 0
Good decision, your total losses are 0
Guess my number, its between 0 and 2: 1
My number was 0, do you still want to play (1/0)? 0
Good decision, your total losses are 0
Guess my number, its between 0 and 2: 1
My number was 1, do you still want to play (1/0)? 1
You won, your total wins are: 5
Guess my number, its between 0 and 2: 1
My number was 1, do you still want to play (1/0)? 1
You won, your total wins are: 6
Guess my number, its between 0 and 2: 1
My number was 2, do you still want to play (1/0)? 0
Good decision, your total losses are 0
Wins: 6
Didn't win: 0
Floating point exception (core dumped)
Finally, in this example, I chose to play only 5 times. I won
4 times, lost once. The correct probalilities are
win 4/5
lose 1/5
played 5/10
Guess my number, its between 0 and 2: 1
My number was 2, do you still want to play (1/0)? 1
You want to play? Your total losses are 1
Guess my number, its between 0 and 2: 1
My number was 1, do you still want to play (1/0)? 1
You won, your total wins are: 1
Guess my number, its between 0 and 2: 1
My number was 1, do you still want to play (1/0)? 1
You won, your total wins are: 2
Guess my number, its between 0 and 2: 1
My number was 1, do you still want to play (1/0)? 1
You won, your total wins are: 3
Guess my number, its between 0 and 2: 1
My number was 1, do you still want to play (1/0)? 1
You won, your total wins are: 4
Guess my number, its between 0 and 2: 1
My number was 0, do you still want to play (1/0)? 0
Good decision, your total losses are 1
Guess my number, its between 0 and 2: 1
My number was 0, do you still want to play (1/0)? 0
Good decision, your total losses are 1
Guess my number, its between 0 and 2: 1
My number was 1, do you still want to play (1/0)? 0
You don't want to play? Your total losses are 1
Guess my number, its between 0 and 2: 1
My number was 1, do you still want to play (1/0)? 0
You don't want to play? Your total losses are 1
Guess my number, its between 0 and 2: 1
My number was 2, do you still want to play (1/0)? 0
Good decision, your total losses are 1
Wins: 4
Didn't win: 1
Wins / Didn't Win: 4
#include <math.h> #include <stdio.h> #include <stdlib.h>
int gen_random(long int M) {
double r; double x; int y; int count; r = ( (double)rand() / ((double)(RAND_MAX)+(double)(1)) ); x = (r * M); y = (int) x; return(y); }
int main(int argc, char *argv[]) { int N = ((argc == 2) ? atoi(argv[1]) : 1); int result = 0; srand(N); /*initialize random number generator*/ int win=0; int notwin=0; for(int cnt=0; cnt<10; cnt++){ int play=0; int R=0; R=gen_random(3);
int guess=0; printf("Guess my number, its between 0 and 2: "); scanf("%d",&guess); printf("My number was %d, do you still want to play (1/0)? ", R); scanf("%d", &play); if(R==guess && play==1){ win++; printf("You won, your total wins are: %d\n",win); } if(R==guess && play==0){ printf("You don't want to play? Your total losses are %d\n",notwin); notwin=notwin; } if(R!=guess && play==0){ notwin=notwin; printf("Good decision, your total losses are %d\n",notwin); }
if(R!=guess && play==1){ notwin++; printf("You want to play? Your total losses are %d\n",notwin); }
}
printf("Wins: %d\n",win); printf("Didn't win: %d\n",notwin);
printf("Wins / Didn't Win: %d\n", win/notwin);
return(0); }  
P: n/a
 Co********@gmail.com wrote: I wrote a program that shows some incredibly curious probabilities. It is a simple game where you guess a number between 0 and 2 that the computer thinks up. What is origonal about this game is the computer tells you before hand if you got the number right and you can decide if you want to play or not.
this sounds perilously close to a causality violation. Was your
computer
travelling faster than light when it performed this computation?
<snip>

Nick Keighley
As I recall, OSI dealt with TCP/IP by just admitting it into the spec
as a variation of existing levels. This is akin to dealing with an
Alien face hugger by allowing it to implant its embryo in your body.   This discussion thread is closed Replies have been disabled for this discussion.   Question stats  viewed: 1131
 replies: 3
 date asked: Apr 10 '06
