有一个赌局,抛一枚硬币,正面朝上赢,反面朝上输。而后每次自由下注。python
若是咱们按照这样的次序下注:1,2,4,8,16,......,2^n.只要有一次获胜,那么咱们就从头再来。这里咱们能够看出,每次获胜均可以赢得1元钱。由于2^n次方的数列前n-1次项和为2^n-1。这里咱们就能看出,只要你有足够多的钱,那么你总能赚钱。这一游戏,就叫作等价鞅。app
# -*- coding: utf-8 -*- """ Created on Mon Oct 24 16:05:03 2016 @author: Luyixiao """ import numpy as np import matplotlib.pyplot as plt import pandas as pd # true = win;false = loss def winOrLossGenerator(p,size): randomNumber = np.random.uniform(0,1,size) WL = randomNumber < p return WL def player(WL_list): amount = 100#1$ as initial money moneyList=[]#use this list to record the lost of the money amount gain = 0 margin = 100 lossNumber = 0 for i in range(0,len(WL_list)): #print WL_list[i] if WL_list[i] == True: lossNumber = 0 gain = gain + 1 margin = amount + gain if WL_list[i] == False: margin = margin - 2**lossNumber lossNumber = lossNumber + 1 moneyList.append(margin) print moneyList fig = plt.figure(figsize=(10,20)) plt.title("win probability is 0.5") plt.plot(range(0,len(moneyList)),moneyList) WL_list = winOrLossGenerator(0.5,100) #print WL_list player(WL_list)上面的代码用蒙特拉罗的思想模拟了这一游戏,
winOrLossGenerator函数用于产生size个输或者赢的序列。
player(WL_list)函数则用于模拟赌博的人。 每次运行的结果都是不同的,咱们取一次观察一下资金的变化状况。
咱们能够看到,此次仿真中,最大的资金回测大概在72元左右。咱们修改一下获胜的几率,假设咱们的硬币是不均匀的,而赌场中每每是这呀。dom
若是咱们的获胜几率只有2,那么资金曲线是这样的:函数
获胜率为0.4,状况还马马虎虎this
获胜的几率为0.6:spa
获胜的几率为0.9的时候,资金曲线就比较平稳的向上了:.net
本文同步分享在 博客“钱塘小甲子”(CSDN)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。3d