微信红包游戏,代码模拟

本文通过Python代码模拟微信红包游戏规则,初始3元,10个红包,最大金额者按5倍接龙,金额低于1元则重置。采用截尾正态分布生成随机数。模拟结果显示,红包金额在49次后达40元,197次后达50元,增长放缓原因待讨论。代码仅供参考,未实际验证。
摘要由CSDN通过智能技术生成

       红包游戏规则:初始价3元,一次封10个,允许自己抢自己封的红包,抢到金额最大的按所抢金额5倍接龙继续封,若金额低于1元则以初始价重新开始,一旦参加抢红包就默认同意以上规则。

       用代码模拟上面规则,看在发多少次红包之后金额会上去。在这里首先要猜测一下微信产生随机数的规则。先参考一下知友的回答:

      http://www.zhihu.com/question/22625187 中 马景鋮的回答。

      微信红包随机数服从截尾正态分布。

      由此可以用python代码实现如下:

    

#coding=utf-8
import numpy as np
import pandas as pd
import random
#产生正态随机数
def yield_gifts(money,num):
    return [random.normalvariate(money/num,2) for x in range(num)]

def red_envelopes_game(i,begin_money,num,end_money):
    gifts_ser=pd.Series(yield_gifts(begin_money,num))
    #正态随机数截尾
    gifts_ser=abs(gifts_ser)
    gifts_ser=gifts_ser/gifts_ser.sum()*begin_money
    next_money=gifts_ser.max()*5
    if i>500: return 
    if next_money>end_money:
        return i+1
    else:
        return red_envelopes_game(i+1,next_money,num,end_money)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值