#include <stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
int running(int var1)
{
if (var1 == 0)
return 1;
else
return 0;
}
int win(int money, int var2)
{
if (var2 == 0)
return money * 3;
else if (var2 == 1)
return money * 2;
}
int lose(int money)
{
return money;
}
int game(int var1, int var2, int* money, int betting)
{
int res;
res = running(var1);
if (res == 1)
{
if (var2 == 0)
{
*money = *money + win(betting, var2);
printf("money : %10d \t betting: %10d Win*3\n", *money, betting);
return 0;
}
if (var2 == 1)
{
*money = *money + win(betting, var2);
printf("money : %10d \t betting: %10d Win*2\n", *money, betting);
return 0;
}
}
else if (res == 0)
{
*money = *money - lose(betting);
printf("money : %10d \t betting: %10d Lose\n", *money, betting);
return 1;
}
}
int main(void)
{
int i = 0, var1, var2, end;
static int cnt = 0;
static int cnt2 = 0;
int money = 10000000000; int betting = 10000;
srand((unsigned)time(NULL));
var1 = rand() % 5;
var2 = rand() % 2;
while (1)
{
srand((unsigned)time(NULL));
var1 = rand()% 5;
var2 = rand()% 2;
betting = 10000;
end = game(var1, var2, &money, betting); cnt++;
if (end == 1)
{
while (1)
{
srand((unsigned)time(NULL));
//_sleep(1000);
betting *= 2;
var1 = rand() % 5;
var2 = rand() % 2;
end = game(var1, var2, &money, betting); cnt++; cnt2++;
if (end == 0)
break;
if (money < 0)
{
printf("bankrupt!!!\n");
printf("count : %d, continuous cnt : %d\n", cnt, cnt2 + 1);
return 0;
}
}
}
if (money < 0)
{
printf("bankrupt!!!\n");
printf("count : %d, continuous cnt : %d\n", cnt, cnt2 + 1);
return 0;
}
printf("count : %d, continuous cnt : %d\n", cnt, cnt2 + 1);
cnt2 = 0;
}
return 0;
}
18연패할 확률이 0.0180144%(10만분의18) 인데 실제로 돌려보면 1000번도 못가서 파산합니다..
시드값을 time으로줘서 1초도 안되는 시간에 같은값을 같는거 같은데 time(NULL)말고 다른 값을 시드로 주는 방법이 있을까해서 여쭈어봅니다.