시드 머니를 1000불로 계획하고 룰렛을 마틴(게일)베팅법으로 베팅 했을 때 ,

초기 베팅 금액 별 이길 확률과 평균 베팅 횟수를 python 으로 구현 해 보았습니다.

(룰렛에 0은 포함 00은 미포함)

결론은 1000불을 가지고 룰렛 number, color 베팅을 할 경우

7불, 15불을 초기 배팅금으로 잡고 시작 하는게 가장 승률이 높았습니다.

베팅 횟 수까지 고려 한다면 15불로 시작 하는게 가장 이상적인 것 같습니다(저의 의견).

!!! 절대 베팅을 권고하는 글은 아닙니다. 심심풀이로 만들어 보았을 뿐입니다

base_bet_money: $, win_rate: 승률, betting_count: 베팅 횟수

!! 제가 코드를 잘 못 짰을 수도 있어서 코드도 마지막에 첨부 하였습니다.

for bet_origin in tqdm_notebook(range(1,51)):
    idx = 0
    win = 0
    lose = 0
    total = 0
    
    while True:
        money = 1000
        bet = bet_origin
        i = 0
        hole = 0
        zzac = 0
        while True:
            a = random.randint(0,36)

            if a == 0:
                money -= bet
                bet = bet*2
            elif a%2 == 0:
                money += bet
                bet = bet_origin
                zzac += 1
            else:
                money -= bet
                bet = bet*2
                hole += 1

            i += 1
            if money <= bet:
                lose += 1
                break

            if money >= 1100:
                total += i
                win += 1
                break

        idx += 1

        if idx >= 100000:
            break

    print(bet_origin, win/1000, total/100000)

 

아래 소스를 복사 하여

VScode 나 notepad++ 로 roulette.py 로 저장 하신 뒤

command 창에서 python roulette.py 로 실행 하시면 됩니다.

기본으로 게임에서 질 경우 더블배팅(마틴게일) 금액으로 설정 해 놓았습니다

카지노 가시려는 분이 계시다면 룰렛 홀짝(even,odd) 더블 배팅 연습 해보고 가셔요

실행 화면 입니다

# import error 가 날 경우에 각각 pip3 install 해주셔야 합니다.

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton, QLabel, QLineEdit, QMessageBox
from PyQt5.QtCore import Qt
from random import randint

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setupUI()

    def setupUI(self):
    	# 프로그램 title
        self.setWindowTitle("Roulette")

		# 룰렛에서 나온 숫자
        self.number = QLabel(self)
        self.number.setText('0')
        self.number.move(35, 15)

		# 현재 금액
        self.tmoney = QLabel(self)
        # 시드머니 1000
        self.tmoney.setText('1000')
        self.tmoney.move(30, 40)
        
        # odd and even 구분 변수
        self.bet = QLineEdit(self)
        self.bet.resize(30, 20)
        self.bet.move(70, 45)
        self.bet.hide()

		# betting money
        self.mn = QLineEdit(self)
        # 기본 베팅 금액 15
        self.mn.setText('15')
        self.mn.resize(33, 20)
        self.mn.move(71, 20)

		# odd or even click view
        self.h_z = QLabel(self)
        self.h_z.setText('')
        self.h_z.move(117, 15)

		# start 버튼
        btn1 = QPushButton("START", self)
        btn1.resize(76,20)
        btn1.move(70,70)
        btn1.clicked.connect(self.btn1_clicked)        

		# 초기화 버튼 (돈)
        btn2 = QPushButton("INIT", self)
        btn2.resize(30,20)
        btn2.move(28,70)
        btn2.clicked.connect(self.btn2_clicked) 

		# 홀수 선택
        btnOdd = QPushButton("Odd", self)
        btnOdd.resize(35,20)
        btnOdd.move(70,45)
        btnOdd.clicked.connect(self.btnOdd_clicked) 

		# 짝수 선택
        btnEven = QPushButton("Even", self)
        btnEven.resize(35,20)
        btnEven.move(110,45)
        btnEven.clicked.connect(self.btnEven_clicked) 

	# 홀수 선택 함수
    def btnOdd_clicked(self):
        self.bet.setText('1')
        self.h_z.setText('ODD')

	# 짝수 선택 함수
    def btnEven_clicked(self):
        self.bet.setText('2')
        self.h_z.setText('EVEN')

	# enter 키로 start 버튼 대체
    def keyPressEvent(self, e):
        if e.key() in [Qt.Key_Return, Qt.Key_Enter]: 
            tm, num, status = self.btn1_clicked()
            print(tm, num, status) 

        if e.key() == Qt.Key_Escape:
            print('INIT')
            self.btn2_clicked()

	# 스타트 버튼 함수
    def btn1_clicked(self):
        a = randint(0,36)
        b = self.mn.text()
        c = self.bet.text()
        t = self.tmoney.text()
        if not b:
            self.number.setText(str(a))
            return 0, a, 'none'
            pass
        elif int(t) - int(b) < 0:
            QMessageBox.about(self, "error", "no money")
            return 0, a, 'none'
            pass
        elif not a or int(a) == 0:
            tm = int(t) - int(b)
            self.tmoney.setText(str(tm))
            self.number.setText(str(a))
            self.mn.setText(str(int(b)*2))
            return tm, a, 'lose'
        elif not c or int(c) == 0:
            return t, a, 'zero'
        else:
            if int(c)%2 != int(a)%2:
                tm = int(t) - int(b)
                self.tmoney.setText(str(tm))
                self.number.setText(str(a))
                self.mn.setText(str(int(b)*2))
                return tm, a, 'lose'
            else:
                tm = int(t) + int(b)
                self.tmoney.setText(str(tm))
                self.number.setText(str(a))
                self.mn.setText('15')
                return tm, a, 'win'
        
	# 초기화 버튼 함수
    def btn2_clicked(self):
        self.tmoney.setText('1000')
        self.number.setText('0')
        self.mn.setText('15')
        self.bet.setText('')

if __name__ == "__main__":
    app = QApplication(sys.argv)
    mywindow = MyWindow()
    mywindow.show()
    app.exec_()

 

파이썬에는 between 이 없습니다.

그래서 range 로 대체 해서 사용해야 되는데 between 보다 더 간단 합니다.

아래 예제처럼 사용하시면 됩니다.

# 사용 할 수 없는 between 코드
if a between 1 and 4:
	print(a)
    
# between 을 range 로 변경 해서 사용
if a in range(1,4):
	print(a)

+ Recent posts