玩彩票赢钱概率有多少?用Python来告诉你

别来无恙 提交于 2020-02-25 19:53:10

玩彩票赢钱概率有多少?用Python来告诉你

标签(空格分隔): Python


工具:Jupyter notebook + Anaconda

游戏规则:时时彩一种玩法是买尾号。2元一个数字,中奖是20元。每个数字出现的概率相等。

目前想到两种买法:

  1. 随机购买,人是感性动物,很容易受周围环境干扰。完全随机购买在生活中是不存在的。
  2. 分析数字在前面N期出现的概率,选择概率最小的n个数字购买。

导入包

import numpy as np

定义玩法一:完全随机购买

def play_lottery(my_money,play_num,money):
    '''
    随机选择数的中奖率
    result:结果字典
    num:用于统计每个数字出现次数
    my_money:我的余额
    play_num:投注期数
    money:投注额
    flag: 1代表赢钱 0则相反 2表示不输不赢

    '''
    flag = 1
    temp = my_money
    result = {'0':0,
         '1':1,
         '2':2,
         '3':3,
         '4':4,
         '5':5,
         '6':6,
         '7':7,
         '8':8,
         '9':9}
    data = np.random.randint(0,10,(play_num,1))
    num = np.zeros((10,1))
    for i in data:
        play = np.random.randint(0,10,(5,1))
        if i in play:
            temp = temp + money
        else:
            temp = temp - money
        if result[str(i[0])] == i[0]:
            num[i[0]] = num[i[0]] + 1
    print('我的余额:',temp)
    print('开奖结果统计:\n',num[0][0],num[1][0],num[2][0],num[3][0],num[4][0],num[5][0],num[6][0],num[7][0],num[8][0],num[9][0])
    if temp < my_money:
        flag = 0
    elif temp == my_money:
        flag = 2
    return flag

赌博代码

i = 0
binary = np.zeros((3,1))
while i < 10000:
    binary[play_lottery(1000,10,10)][0] += 1 
    i = i + 1


可以看出输:赢:平=6037:1886:2077

定义玩法二:按照概率购买

第一次购买,假设玩家已经获取到前面N期开奖号的中奖规律,不不不,应该是前面N期的各个数字出现的次数。
方法如下:

def play_lottery2(my_money,play_num,money):
    '''
    随机选择数的中奖率
    result:结果字典
    num:用于统计每个数字出现次数
    my_money:我的余额
    play_num:投注期数
    money:投注额
    flag: 1代表赢钱 0则相反 2表示不输不赢

    '''
    flag = 1
    temp = my_money
    result = {'0':0,
         '1':1,
         '2':2,
         '3':3,
         '4':4,
         '5':5,
         '6':6,
         '7':7,
         '8':8,
         '9':9}
    data = np.random.randint(0,10,(play_num,1))
    num = np.zeros((10,1))
    num_first = np.random.randint(0,10,(10,1))
    is_one = 1
    for i in data:
        if is_one == 1:
            play = np.argsort(num_first,axis=0).reshape(-1,1)[0:5]
            is_one = 0
        play = np.argsort(num,axis=0).reshape(-1,1)[0:5]
        if i in play:
            temp = temp + money
        else:
            temp = temp - money
        if result[str(i[0])] == i[0]:
            num[i[0]] = num[i[0]] + 1
    print('我的余额:',temp)
    print('开奖结果统计:\n',num[0][0],num[1][0],num[2][0],num[3][0],num[4][0],num[5][0],num[6][0],num[7][0],num[8][0],num[9][0])
    if temp < my_money:
        flag = 0
    elif temp == my_money:
        flag = 2
    return flag

赌博代码

i = 0
binary = np.zeros((3,1))
while i < 10000:
    binary[play_lottery2(1000,10,10)][0] += 1 
    i = i + 1

可以看出按照概率购买之后比值为:
输:赢:平=3733:3761:2506
相对之前完全随机购买
输:赢:平=6037:1886:2077
赢得几率提升了不少,甚至赢>输,说的我都想翘课买彩票了。

好了回到正题。珍爱生命,远离黄赌毒。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!