게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
베팅 프로그램 시뮬레이션
게시물ID : programmer_14027짧은주소 복사하기
작성자 : Utopia
추천 : 0
조회수 : 578회
댓글수 : 6개
등록시간 : 2015/10/22 15:21:52
http://ideone.com/JylnyL
 
#include <stdio.h>
#include<stdlib.h>
#include<time.h>
 
int running(int var1)
{
    if (var1 == 0)    //20%확률(이김) 일때 1리턴
        return 1;
    else
        return 0;    //80%확률(짐) 일때 0리턴
}
 
int win(int money, int var2)
{
    if (var2 == 0//1등 3배
        return money * 3;
    else if (var2 == 1//2등 2배
        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;
        }
        //*money = *money + win(betting, var2);
        //printf("money : %10d \t betting: %10d Win\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;
    }
    return money;
 
}
int main(void)
{
    int i = 0, var1, var2, res, end;
    static int cnt = 0;
    static int cnt2 = 0;
    int money = 1000000000int betting = 10000;
 
    var1 = rand() % 5;
    var2 = rand() % 2;
    srand(time(NULL));
 
 
 
 
    ////for (i = 0; i < 20; i++)
    ////{
    ////    var1 = rand() % 5;
    ////    var2 = rand() % 2;
    ////    printf("%d %d\n", var1, var2);
    ////}rand값확인 유효값확인완료
    //
    ////money=game(var1, var2, &money, betting);
    ////printf("money : %4d\n", money);
    //for (i = 0; i < 20; i++)
    //{
    //    var1 = rand() % 5;
    //    var2 = rand() % 2;
    //    game(var1, var2, &money, betting);
    //    printf("money : %4d\n", money);
    //}    
    ////1회게임완료
 
 
    while (1)
    {
        var1 = rand() % 5;
        var2 = rand() % 2;
        betting = 10000;
        end = game(var1, var2, &money, betting); cnt++;
 
        if (end == 1)    //패했을시
        {
 
            while (1)    //이길때까지 반복
            {
                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!!!");
                    printf("count : %d, continuous cnt : %d\n", cnt, cnt2 + 1);
                    return 0;
                }
            }
        }
 
        if (money < 0)
        {
            printf("bankrupt!!!");
            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;
}
cs
드디어 소스가 올라가네요 !! 짬짬히 만든코드라 조금 난잡합니다

베팅하는 프로그램입니다.
1회배팅 만원에 지면 2만원 또지면 4만원 이렇게 확률을 키워나가는 프로그램입니다.

그런데 rand값이 고르게 분포하지 못해서인지 200회를 넘지 못하네요 ㅜㅜ 

확률이 너무 극단적이라고해야되나?.... 연속으로 지는 횟수가 많을수록 확률은 극격히 떨어질텐데말이죠...

200판도 안되서 14~15번 연속으로 질확률이 나온다는건 의심이 많이됩니다 ㅠㅠ


시뮬레이션을 제대로해보고싶습니다.

랜덤값을 좀더 고르게? 이쁘게? 분포해주고싶습니다. 조언부탁드려요~
  
1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
#include <stdio.h>#include<stdlib.h>#include<time.h>int running(int var1){	if (var1 == 0)	//20%확률(이김) 일때 1리턴		return 1;	else		return 0;	//80%확률(짐) 일때 0리턴}int win(int money, int var2){	if (var2 == 0) //1등 3배		return money * 3;	else if (var2 == 1) //2등 2배		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;		}		//*money = *money + win(betting, var2);		//printf("money : %10d \t betting: %10d Win\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;	}	return money;}int main(void){	int i = 0, var1, var2, res, end;	static int cnt = 0;	static int cnt2 = 0;	int money = 1000000000; int betting = 10000;	var1 = rand() % 5;	var2 = rand() % 2;	srand(time(NULL));	////for (i = 0; i < 20; i++)	////{	////	var1 = rand() % 5;	////	var2 = rand() % 2;	////	printf("%d %d\n", var1, var2);	////}rand값확인 유효값확인완료	//	////money=game(var1, var2, &money, betting);	////printf("money : %4d\n", money);	//for (i = 0; i < 20; i++)	//{	//	var1 = rand() % 5;	//	var2 = rand() % 2;	//	game(var1, var2, &money, betting);	//	printf("money : %4d\n", money);	//}		////1회게임완료	while (1)	{		var1 = rand() % 5;		var2 = rand() % 2;		betting = 10000;		end = game(var1, var2, &money, betting); cnt++;		if (end == 1)	//패했을시		{			while (1)	//이길때까지 반복			{				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!!!");					printf("count : %d, continuous cnt : %d\n", cnt, cnt2 + 1);					return 0;				}			}		}		if (money < 0)		{			printf("bankrupt!!!");			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;}
#include <stdio.h>#include<stdlib.h>#include<time.h>int running(int var1){	if (var1 == 0)	//20%확률(이김) 일때 1리턴		return 1;	else		return 0;	//80%확률(짐) 일때 0리턴}int win(int money, int var2){	if (var2 == 0) //1등 3배		return money * 3;	else if (var2 == 1) //2등 2배		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;		}		//*money = *money + win(betting, var2);		//printf("money : %10d \t betting: %10d Win\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;	}	return money;}int main(void){	int i = 0, var1, var2, res, end;	static int cnt = 0;	static int cnt2 = 0;	int money = 1000000000; int betting = 10000;	var1 = rand() % 5;	var2 = rand() % 2;	srand(time(NULL));	////for (i = 0; i < 20; i++)	////{	////	var1 = rand() % 5;	////	var2 = rand() % 2;	////	printf("%d %d\n", var1, var2);	////}rand값확인 유효값확인완료	//	////money=game(var1, var2, &money, betting);	////printf("money : %4d\n", money);	//for (i = 0; i < 20; i++)	//{	//	var1 = rand() % 5;	//	var2 = rand() % 2;	//	game(var1, var2, &money, betting);	//	printf("money : %4d\n", money);	//}		////1회게임완료	while (1)	{		var1 = rand() % 5;		var2 = rand() % 2;		betting = 10000;		end = game(var1, var2, &money, betting); cnt++;		if (end == 1)	//패했을시		{			while (1)	//이길때까지 반복			{				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!!!");					printf("count : %d, continuous cnt : %d\n", cnt, cnt2 + 1);					return 0;				}			}		}		if (money < 0)		{			printf("bankrupt!!!");			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;}
#include <stdio.h>#include<stdlib.h>#include<time.h>int running(int var1){	if (var1 == 0)	//20%확률(이김) 일때 1리턴		return 1;	else		return 0;	//80%확률(짐) 일때 0리턴}int win(int money, int var2){	if (var2 == 0) //1등 3배		return money * 3;	else if (var2 == 1) //2등 2배		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;		}		//*money = *money + win(betting, var2);		//printf("money : %10d \t betting: %10d Win\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;	}	return money;}int main(void){	int i = 0, var1, var2, res, end;	static int cnt = 0;	static int cnt2 = 0;	int money = 1000000000; int betting = 10000;	var1 = rand() % 5;	var2 = rand() % 2;	srand(time(NULL));	////for (i = 0; i < 20; i++)	////{	////	var1 = rand() % 5;	////	var2 = rand() % 2;	////	printf("%d %d\n", var1, var2);	////}rand값확인 유효값확인완료	//	////money=game(var1, var2, &money, betting);	////printf("money : %4d\n", money);	//for (i = 0; i < 20; i++)	//{	//	var1 = rand() % 5;	//	var2 = rand() % 2;	//	game(var1, var2, &money, betting);	//	printf("money : %4d\n", money);	//}		////1회게임완료	while (1)	{		var1 = rand() % 5;		var2 = rand() % 2;		betting = 10000;		end = game(var1, var2, &money, betting); cnt++;		if (end == 1)	//패했을시		{			while (1)	//이길때까지 반복			{				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!!!");					printf("count : %d, continuous cnt : %d\n", cnt, cnt2 + 1);					return 0;				}			}		}		if (money < 0)		{			printf("bankrupt!!!");			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;}
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호