背景:有个抽奖相关的需求,其中给定虚拟奖品的概率是95%,实物奖品的概率是5%,实物中又有很多价值不等的礼物,概率也不一样。想着写个脚本,把抽到的奖品记录下来,然后计算整体的抽奖概率。

写这个抽奖概率统计脚本思路:
1、第一步,请求抽奖接口,获取接口数据

2、接口中的rewardType,rewardName字段表示奖品的id和名称,其中rewardType<8时,都是虚拟奖品,大于8的都是实物奖品,就可以根据rewardType判断,在这5000次抽奖中,抽到了几次虚拟奖品,几次实物奖品,可以算出虚拟/实物奖品的概率

3、然后根据实物列表中,计算每个实物出现的次数,将重复的实物奖品以字典形式的输出

4、再根据每个实物出现的次数,计算概率

from time import sleep
import requests
from collections import Counterdef choujiang(**kwargs):shiwu_num = 0  # 实物奖品数量xuni_num = 0  # 虚拟奖品数量testList = [] # 实物名称totel = 5000  # 总的抽奖次数headers_admin = {'content-type': 'application/x-www-form-urlencoded','ua': 'xxx','Cookie': 'xxx',}for i in range(totel):# 第一步,请求抽奖接口,获取接口数据result = requests.post("http://api.xxx.com/liveshow/activity/seventh/getReward", headers=headers_admin)response = result.json()print(response)# 接口中的rewardType,rewardName字段表示奖品的id和名称,其中rewardType<8时,都是虚拟奖品,大于8的都是实物奖品rewardType = response['data']['rewardType']rewardName = response['data']['rewardName']if rewardType < 8:shiwu_num = shiwu_num + 1testList.append(rewardName)else:xuni_num = xuni_num + 1sleep(2)print("\n*****一共抽奖%s次,抽到实物次数为:%s次,抽到虚拟奖品次数为:%s次*****\n" % (totel, shiwu_num, xuni_num))print("抽取到的实物为:", testList)# 计算每个实物出现的次数,将重复的实物奖品以字典形式的输出chouzhong_shiwu = dict(Counter(testList))print({key: value for key, value in chouzhong_shiwu.items() if value > 1})# 出现的次数取出来,计算概率avgDict = {}for k, v in chouzhong_shiwu.items():# v是每个实物出现的次数avgDict[k] = v / float(totel) * 100print("抽到%s的概率为:%.2f%%" % (k, avgDict[k]))if __name__ == "__main__":choujiang()

注意:这样计算也是看概率分布,不能百分百和产品/开发给出的概率一模一样,但是至少能验证整体的概率是否正确,并且能看出一些比较贵重实物,概率是否有很大的异常,让需求上线是自己心里也有底。可以把请求接口的次数调大一点,这样会更接近于给出的概率。

Python--抽奖概率统计测试相关推荐

  1. python 抽奖概率_Python 自动统计微博抽奖中奖男女比例(附代码)

    今天来写一个自动计算微博抽奖男女比例的代码,很早就应该发这篇了,只是不想蹭热点(才不是拖更). 整个的过程大概分为三步: S1:从抽奖公示页获取所有中奖者的微博ID S2:由每个中奖者的微博ID进入其 ...

  2. python抽奖概率设计_通过python分析原神,结果出现了“这种情况”

    最近迷上了原神这款游戏,趁着保研完,肝了两个星期,也氪了一些金.先不谈这款游戏可玩性有多高,但论氪金强度算是我从小到大玩的游戏中,能排得上第一的了. 对于这种寸卡寸金的游戏,如何在无穷无尽的抽卡活动中 ...

  3. python抽奖概率设计_辞职转行不如学Python,那些下载安装的坑,你真的都避开了嘛?...

    现在的职场竞争越来越激烈,不学上一两门新技能,保持自己知识更新,很容易被年轻后辈超越.有些人选择学一门外语,有些人选择学习职场上为人处事的能力. 有人选择Python. 因为,就业市场需要Python ...

  4. python 排列组合函数_Python概率统计(1):排列组合

    〇.写在前面 最近面试了很多数据分析师的候选人,包括很多背景相当不错的同学,但是都不是特别满意. 为什么呢?其实说来很简单,我们这边对于经验较少的分析师,尤其是刚毕业或者校招的同学,会着重考察统计基础 ...

  5. python基于模型对测试集和训练集的预测概率结果文件可视化模型的校准曲线、多个模型的校准曲线(calibration curve)

    python基于模型对测试集和训练集的预测概率结果文件可视化模型的校准曲线.多个模型的校准曲线(calibration curve) 目录

  6. 概率统计Python计算:条件概率和概率乘法公式

    1. 古典概型中条件概率的计算 条件概率 P ( B ∣ A ) P(B|A) P(B∣A)是将样本空间限制在 A A A上, A ∩ B A\cap B A∩B的概率.因此,我们可以利用博文< ...

  7. python实现概率论与数理统计_《统计思维:程序员数学之概率统计》读书笔记

    更多 1.书籍信息 书名:Think Stats: Probability and Statistics for Programmers 译名:<统计思维:程序员数学之概率统计> 作者:A ...

  8. Python 英文文本字母跳转概率统计

    # 英文文本字母跳转概率统计.py # 文本示例:hemlet.txt import csv def getText():txt = open("hamlet.txt"," ...

  9. 概率统计笔记:用python实现贝叶斯回归

    0 理论部分: 概率统计笔记:贝叶斯线性回归_UQI-LIUWJ的博客-CSDN博客 1 数据集部分 1.1 创建数据集 import matplotlib.pyplot as plta_true = ...

最新文章

  1. R in Action 读书笔记(5)
  2. 【干货】最早的打车App产品摇摇招车死亡背后的那些经验
  3. channels2.X 学习笔记
  4. java实现无序数组结构
  5. Linuxs查看进程,杀死进程
  6. 钉钉项目任务怎么添加审批表单
  7. 【opencv】【图像梯度】
  8. 统计带头结点的单向链表的个数并存放在形参n所指的单元中。 欢迎评论 指点。
  9. python 模型 欺诈概率_python信用卡欺诈模型,最大似然参数设置/混淆矩阵
  10. CentOS 6.3 samba安装及配置
  11. 在Linux操作系统下修改IP、DNS和路由配置
  12. DiffPDF(pdf文件比较工具)官方正式版V6.0.0 | diffpdf如何使用 | 含diffpdf的软件安装教程
  13. MATLAB虚数矩阵不可随意转置
  14. 解决Safari12.0不能自动打开EasyConnect(或者如何降级Safari)的问题
  15. 视频文案合并,清除原视频声音让文案转语音
  16. u盘里删除的文件可以恢复吗?分享解决方法
  17. Hive基础知识概念
  18. r语言 相关性作图_R语言:多个基因的相关性分析与展示
  19. Word 去除脚注分隔线前的空格
  20. 网站运营中长尾关键词优化策略

热门文章

  1. 做为一名程序员应该有的的好习惯
  2. Android开发辅助工具类 Utils
  3. 输入法规则(U模式输入)
  4. 【NDN实验】ndnSIM: NDN simulator for NS-3 全文翻译
  5. 荣耀4c电信Android6.0,华为畅玩4C电信版 CyanogenMod 13.0_Android_6.0.1 【HRT_chiwahfj】
  6. [USACO10OCT]汽水机Soda Machine
  7. hdu 1116 Play on Words
  8. 中国鹊桥,国际交友网
  9. 当时我就哭了!中国首个火星探测器天问一号发射成功!
  10. 全新设计 水果忍者-穿靴子的猫官方中文版首发