用Python实现简单的抽奖程序!

chatgpt赋能python:Python制作抽奖——让你的活动更有趣 本文由chatgpt生成,文章没有在chatgpt生成的基础上进行任何的修改。以上只是chatgpt能力的冰山一角。作为通用的Aigc大模型,只是展现它原本的实力。对于颠覆工作方式的ChatGPT,应该选择拥抱而不是抗拒,未来属于“会用”AI的人。🧡AI职场汇报智能办公文案写作效率提升教程 🧡专注于AI+职场+办公方向。下图是课程的整体大纲下图是AI职场汇报智能办公文案写作效率提升教程中用到的ai工具。 阅读详情

抽奖基本需求

1、假设中奖概率为:获得 a道具 10% b道具 20% c道具 30% d道具 40%
2、基本的想法是:生成1-100的连续数组,随机生成一个整数,如果是1-10 则中a、10-30 中b、30-60中c、60-100中d

实现方法

布尔判断

1、第一种方法,直接判断数据在哪个范围,非常简单

def choujiang0():
    #生成一个1-100的随机整数
    x = np.random.randint(0,100,dtype='int')
    if x>=0 and x<10:
        return 'a'
    if x>=10 and x<30:
        return 'b'
    if x>=30 and x<60:
        return 'c'
    if x>=60:
        return 'd'

算法判断

2、第二种方法:作为一个程序猿,不能满足于这种太简单的方法,不适合拓展嘛,所以想办法做改造下,用一个算法来实现抽奖,主要有以下两种方式:
2.1 把一个初始概率用字典来做配置,注意这里字典的键值是10、30、60、100,然后通过程序生成整数,判断这个整数落在区间里的概率,对应字典得到获得的奖励,以下是choujiang1方法:

ratio = {10:'a',30:'b',60:'c',100:'d'}
def choujiang1():
    #生成一个1-100的随机整数
    x = np.random.randint(1,101,dtype='int')
    #生成一个1-100的数组
    mother = [x for x in range(1,101,1)]
    #判断x在数组的什么位置
    x_position = mother.index(x)
    pre_number = 0
    for key in ratio.keys():
        if x_position - pre_number>=0 and x_position-int(key)<0:
            return ratio[key]
        if pre_number == 0:
            pre_number=int(key)
    return -1

2.2 在第一点判断整理落在哪个区间的方法,有两种,第一种比较简单,通过for循环遍历字典,从数字0开始,如果满足大于等于前区间小于后区间,则直接读取字典值作为奖励,方法没问题,但次数多了这种遍历效率不高;第二种使用二分法,相对复杂一点,但是算法效率高一些,需要额外写一个二分法的递归方法search,来判断随机数值落在哪个区间,以下是search方法和choujiang2方法:

search方法:

#二分查询方法
def search(seq,number,lower=0,upper=None):
    if upper==None:       
        upper = len(seq) - 1
        #print('now lower is ',lower,' upper is ',upper)
    if upper==lower:
        #print('now lower is ',lower,' upper is ',upper)
        #assert number == seq[upper]
        return upper
    else:
        middle = (upper+lower)//2        
        if number>seq[middle]:
            #print('now lower is ',middle+1,' upper is ',upper)
            return search(seq,number,middle+1,upper)
        else:
            #print('now lower is ',lower,' upper is ',middle)
            return search(seq,number,lower,middle)

choujiang2方法:

#第二种抽奖方式
ratio = {10:'a',30:'b',60:'c',100:'d'}
list_ratio = []
for i in ratio.keys():
    list_ratio.append(i)
list_ratio = sorted(list_ratio)

def choujiang2():
    #生成一个1-100的随机整数
    x = np.random.randint(1,101,dtype='int')
    i = search(list_ratio,x,lower=0)
    key = list_ratio[i]
    return ratio[key]

验证和效率

如何验证

验证一下概率是否符合我们的期望,代码如下:

def test_choujiang(func,*args,**kwargs):
    Counter = {'a':0,'b':0,'c':0,'d':0}
    n = 1000000
    for i in range(n):
        result = func(*args,**kwargs)
        for key in Counter.keys():
            if result==key:
                Counter[key] += 1
    print('a的概率是:{}'.format(Counter['a']/n))
    print('b的概率是:{}'.format(Counter['b']/n))
    print('c的概率是:{}'.format(Counter['c']/n))
    print('d的概率是:{}'.format(Counter['d']/n))

%time test_choujiang(choujiang0)

比较不同抽奖方法的效率

采用二分法的抽奖方法,相对来说灵活性好且效率最高。

%time test_choujiang(choujiang0)
%time test_choujiang(choujiang1)
%time test_choujiang(choujiang2)

以下两次分别是10万次调用和100万次调用的时间顺序。

#投10万次的结果
输出结果:
a的概率是:0.1001
b的概率是:0.2028
c的概率是:0.29695
d的概率是:0.40015
Wall time: 820 ms
a的概率是:0.10136
b的概率是:0.19901
c的概率是:0.29813
d的概率是:0.4015
Wall time: 2.7 s
a的概率是:0.10018
b的概率是:0.20243
c的概率是:0.29917
d的概率是:0.39822
Wall time: 823 ms

#投100万次的结果

输出结果:

a的概率是:0.098874

b的概率是:0.199867

c的概率是:0.300063

d的概率是:0.401196

Wall time: 7.98 s

a的概率是:0.10022

b的概率是:0.199958

c的概率是:0.300433

d的概率是:0.399389

Wall time: 17 s

a的概率是:0.100109

b的概率是:0.200252

c的概率是:0.300102

d的概率是:0.399537

Wall time: 4.54 s

 

完整项目代码获取点这即可!

Python实现抽奖程序 此程序将根据设定的中奖率计算每个奖项的中奖人数,并随机从名单中抽取中奖者。中奖名单将显示在控制台中,其中一等奖、二等奖和三等奖分别对应于奖品XXX、YYY和ZZZ。由于要求不允许重复中奖,因此每个中奖者只会在一个奖项中出现一次。 阅读详情

相关推荐

公司要抽奖活动?50行Python代码制作了一个转盘抽奖小程序

导语 ​​​​​ 哈喽!大家好~ 新手的一周开始,木木子来送福利了。 昨天去超市屯货,看到满199可以转转盘一次,有优惠券,还有直接减免50,赠送的洗衣液什么的。 这活动对于拉新、促活、获客、增长还是有不错的效果,很多阿姨平常都在买买买,这次买多点儿也没关系,还可以抽奖嘛~就让大家感觉自己赚了就成功了~ ​ ​你们是不是也经常看到线上、线下门店活动都是搞抽奖活动的。 我每次游戏签到或者一些写文章的经常随处可见这类抽奖、转盘的活动,换汤不换药都是差不多方式。 那今天的话小编就带大家一起来看

顾木子吖的博客 1万+

用Python实现简单的抽奖程序

这里写自定义目录标题抽奖基本需求实现方法遍历判断二分法判断验证和效率如何验证通过如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 抽奖基本需求 1、假设中奖概率为:获得 a道具 10% b道具 20% c道具 30% d道具 40% 2、基本的想法是:生成1-100的连续

westwood0013的博客 3034

利用python编写年会抽奖小程序

今天看到有人吐槽公司年会抽奖,中奖的都是程序员,一时兴起自己写一个抽奖小程序,如有不足,还请大神指点~ 【需求】 参与抽奖的员工名单从cvs文件导入 一共5轮抽奖:幸运奖两轮(15名*2),三等奖(6名),二等奖(3名),一等奖(1名) 输入“s”开始抽奖 在上一轮被抽中者要被从下一轮的名单中剔除 【追加需求】 在有未出席者或其他原因需要补抽的情况下,可以随时在当轮补抽 【代码】 # -*...

weixin_41927423的博客 8611

【Python系列】一个简单的抽奖小程序

想自己写一个抽奖小程序,用于粉丝抽奖结果。 原本规划的比较理想: 1.实时拉取评论用户信息 2.数据清洗,数据去重 3.存储评论用户信息 4.前端酷炫的展示效果 但………………一步一步来吧,总会实现的!

颜淡慕潇 2万+

手把手教你用Python制作一个大转盘抽奖小程序 !线上线下营销活动都能用!

是你是你就是你,幸运大转盘,开启你专属你的好运吧!

xiaolinyui的博客 6825

公司年会抽奖程序-python

发一下自己写的公司抽奖程序。。 需求:公司年会要一个抽奖程序,转盘上的每一个人名是随机中奖的,中奖后的人不可以再次中奖,按住抽奖,就会一直在转,放开后,要再转一两圈才停。 呵,刚好自己在学python cocos2d, 就用这个刚学的东东,虽然只学了点皮毛..直接上源码 # coding:utf-8 # import sys # import os # sys.path.insert(

cheng830306的专栏 1万+

Python做一个简单的抽奖程序

今天刚上班,女朋友给我来了个需求,她需要一个抽奖程序,需求如下: 1、要一个抽奖程序,输入为很多图片,输出为随机选出几张符合要求的图片 2、简单快速,不用界面也行,她早上就要 我只是一个小小的码农,怎么会做如此高大上的东西,我甚至于一口回绝。她抛出了极具诱惑性的条件,晚饭多加一瓶可乐。啥,这么看不起我,就一瓶可乐,呵呵,年轻人不讲武德,耗子尾汁。她又说,再加五块,接不接。好了,我接,这个需求必须接。倒不是看上了那五块钱,毕竟钱财乃身外...

zhanglu_1024的博客 9061

Python编写一个抽奖小程序,新手入门案例,简单易上手!

通过本文,将学习如何使用Python内置的随机模块实现随机抽奖,以及如何利用列表等基本数据结构来管理和操作参与抽奖的人员名单。无论你是Python初学者还是对抽奖程序感兴趣的人,本文都能帮助你入门,并享受到编写简单而有趣程序的乐趣。通过学习本文,读者不仅了解了如何使用Python的随机模块进行随机抽奖,还学会了如何操作列表等基本数据结构来管理参与抽奖的人员名单。随着对Python的进一步学习和实践,你可以尝试更复杂、更有挑战性的项目,并不断提升自己的编程技能。↓↓↓ 程序执行效果如下 ↓↓↓。

m0_65592409的博客 4668

Python爬虫实现:三连文章参与抽奖

1、微信群抽奖(感谢2000+群友的一直支持) 2、优快云评论区抽奖,作为蝉联周榜榜一的过程,少不了粉丝们的大力支持,所以必须抽起来,也希望结识更多小伙伴,一起交流技术,互帮互助,团结有爱。

独木不成林,单弦不成音。 5446

Python编写一个简单的抽奖系统

抽奖是一种常见的活动,可以在各种场合中使用,例如抽奖活动、抽奖游戏等。在Python中,我们可以使用随机数生成器来实现一个简单的抽奖系统。本文将介绍如何使用Python编写一个基本的抽奖系统,并提供相应的源代码。

2301_79366177的博客 1680

SRAM故障排查实战:如何用Nano Prober定位6T存储单元的异常点

本文详细介绍了在SRAM故障排查中,如何运用Nano Prober(纳米探针)技术精准定位6T存储单元的内部异常。面对传统方法难以发现的电性参数漂移(如晶体管阈值电压偏移)或微小物理缺陷,Nano Prober能直接对单个6T单元内的晶体管进行I-V特性测量,结合失效模式分析,有效解决读写错误等疑难问题,是芯片失效分析的关键工具。

v5w6x的博客 668

python抽奖程序_抽奖程序python

广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!大家好,我开始学python,想做一个抽奖程序,源代码如下,如果我要在框架内加上1等奖1个人 ,2等奖2个人,三等奖3个人 应该怎么样编写相关联的代码,就是点击1等奖按钮就只出现一个随机滚动的人员名单,2等奖按钮出现2个滚动的滚动栏,依次类推。 这是我在网上找的代码,1,2,3等奖的...

weixin_39864591的博客 1830

STM32-CubeMx-HAL库-串口空闲中断+DMA——利用HAL_UARTEx_ReceiveToIdle_DMA实现不定长数据接收

STM32-CubeMx-HAL库-串口空闲中断+DMA——利用HAL_UARTEx_ReceiveToIdle_DMA实现不定长数据接收

weixin_43864631的博客 1万+

python实现简单抽奖程序

# author : Mr yi  weibo@ Python研究院  欢迎投稿--- import tkinter import time import threading   class Choujiang:     #初始化魔术方法     def __init__(self):         #准备好界面         self.root = tkinter.Tk()        ...

python实现一个简单的抽奖程序 1万+

ANSYS HFSS 中的相控天线阵列仿真方法

相控天线阵列系统广泛使用,从国防雷达应用到商业 5G 应用。设计这些天线阵列涉及复杂的数学运算,需要全波仿真。Ansys HFSS 全场 3D 电磁仿真软件可以在合理的时间内以较低的计算成本仿真复杂的相控阵天线系统,同时考虑复杂激励、环境(即附近的天线)和平台对其性能的影响。本博客介绍了可用于有效仿真相控天线阵列的不同方法。以下是不同仿真方法的简要概述,视频链接中提供了完整的演示。ANSYS HFSS 提供 4 种不同的相控天线阵列仿真方法:1) 晶胞-无限阵列。

jkh920184196的博客 4260

【阿里云大模型高级工程师ACP学习笔记】2.8 部署模型

【摘要】本文主要分享自学阿里云大模型高级工程师 ACP 认证中《2.8 部署模型》的学习笔记。详细介绍学习目标、梳理涵盖的知识点并评估其重要性和难易度,对既重要又困难的知识点进行重点分析,旨在为对阿里云大模型学习和认证感兴趣的读者提供学习思路和经验参考。

davidkorhenn的博客 2060

Python制作一个圣诞抽奖程序,原来如此简单

下周我们公司的圣诞 Party 活动安排有抽奖环节,由于不方便采用手机抽奖,且目前选用的电脑端在线抽奖会出现卡顿情况,最近我就尝试着用 Python 实现抽奖功能。目前进展不错,也想分享...

Python之禅的专栏 2131

强化学习在视觉导航中的应用

强化学习在视觉导航中的应用​ ,人工智能,计算机视觉,大模型,AI,强化学习(Reinforcement Learning, RL)是一种通过智能体(Agent)与环境进行交互,以最大化累积奖励为目标的机器学习范式。它不依赖于预定义的规则或大量标注数据,而是让智能体在试错过程中学习最优策略。计算机视觉(Computer Vision)则赋予智能体 “观察” 环境的能力,使其能够从图像或视频中提取有用信息。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 22万+

用python实现的两种抽奖算法以及基于tkinter实现的简单GUI(概率随机抽奖、次数随机算法)

------------次数随机算法---------- #抽奖一次少一个名额 class randomMachine(object): import random as rd def setWeight(self, weight): self.weight = weight self.chanceList=[] for k,v...

SleepyPikechu的博客 4347

42、Windows Server Update Services(WSUS)全面指南

本文全面介绍了Windows Server Update Services(WSUS)的安装、配置、管理与优化策略。内容涵盖WSUS基础认知、客户端更新问题解决、多服务器架构设计、计算机分组策略、更新审批与报告查看,并深入探讨了SSL加密配置、性能优化、与其他系统(如AD和SCCM)集成以及常见故障排查方法。通过本指南,IT管理员可高效部署和管理企业级软件更新,提升安全性和运维效率。

cicd6pipeline的博客 101

【JTAG】1149.6协议详解

JTAG1149.6协议是1149.1协议中Boundary-Scan结构的扩展,1149.1对交流耦合、差分或两者兼有的情况并没有得到充分的处理。该协议支持新的I/O测试结构。需要时变(AC)信号的高级I/O引脚允许测试它们之间的连接,这包括所有差分信号引脚或单端信号引脚,通过设计支持交流耦合。..................

xuhe0206的博客 4575

chatgpt赋能python:Python简单抽奖代码——轻松实现抽奖功能

在实际应用中,我们可能需要自定义一些参数以便更灵活地运用抽奖程序。num_of_participants = input('请输入参与者数量:')try:print('输入的不是整数!')exit()num_of_winners = input('请输入获奖人数:')try:print('输入的不是整数!')exit()name = input('请输入第{}位参与者的名字:'.format(i+1))print('参与者数量不足!')exit()print('中奖者为:')

boRRjxBZRf的博客 2063

基于Python的雪球网投资组合数据爬取与分析实战:从入门到精通

在当今数字化投资时代,数据已成为投资者最重要的资产之一。雪球网作为中国领先的投资社交平台,汇聚了大量优质的投资组合数据,这些数据对于量化投资研究和个人投资决策具有重要价值。本文将详细介绍如何使用Python最新技术栈构建一个高效、稳定的雪球网投资组合爬虫,并深入分析获取的数据。投资组合持仓明细及变动历史投资收益率曲线与风险指标投资者操作策略与调仓频率热门行业与个股关注度。

2201_76125261的博客 920

【Python】Python简易滚动抽奖程序

目录:总体介绍1.步进电机简介1)什么是步进电机[^脚注]?2)为什么需要驱动电路去驱动步进电机,而不用IO口直接驱动?3)步进电机的几个概念:2.变焦摄像头参数与结构介绍1)本款变焦摄像头结构:2)其节拍表:3)其对应线序表:4)镜头实物图:3.基础硬件测试驱动1)整体原理图2)PCB电路3)3D_PCB4.STM32控制驱动程序设计1)端口定义与函数声明2)步进电机驱动函数3)按键简单调用转动...

淹死的鱼 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python 活动随机抽奖小程序 简单直白

开始学习python相关知识,看最近有不少随机抽奖小程序,自己也做一个试试 思路: 建立一个抽奖人名单,可以打乱后直接按顺序取,也可以不打乱随机抽。 建立一个奖项名单,按顺序一个一个抽 将随机化成顺序,更容易一些,下面看代码 import random num=eval(input('请输入抽奖人数:')) num2=eval(input('请输入奖项类数:')) list1=[] list2...

axe 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

上一篇: 如何用python修改安卓和iOS的微信和支付宝步数!
下一篇: 爬取酷狗音乐网站,上榜单前500名的歌曲名称!
pythonlaodi
博客等级 码龄6年 286粉丝 244原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值