侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

python实现抽奖小程序

Python  /  管理员 发布于 7年前   161

本文实例为大家分享了python实现抽奖小程序的具体代码,供大家参考,具体内容如下

设计一个抽奖服务 

背景:有x个奖品,要求在y天内发完;每天至少发放z个奖品;每天抽奖人数不定,事先会假设一个范围是m-n

举例:有100个奖品,要求5天内发完,每天至少发15个奖品;每天来抽奖的人估计是 2000-3000 人,希望奖品能够比较均匀,但随机的抽取出来。

接口要求:服务监听一个端口,测试程序不断连接,发送一个数字代表是第几天,比如第1-2000个请求发送1(模拟第一天来了2000人),第2001到5000请求发送2(模拟第二天来了3000人)... 服务返回 0 or 1 表示是否抽到奖品

client.py:设置初始化参数,模拟用户向server端发送数据

# -*- coding: utf-8 -*-import socketimport randomaddress = ('127.0.0.1', 31500)s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)x = int(input("奖品个数x:"))y = int(input("发放天数y:"))z = int(input("每天至少发放奖品个数:"))m = int(input("最少人数m:"))n = int(input("最多人数n:"))data = '{"x":'+str(x)+',"y":+'+str(y)+',"z":'+str(z)+',"m":'+str(m)+',"n":'+str(n)+'}'s.sendto(data.encode('utf-8'), address)for day in range(y): num = random.randint(m, n) print("第",day+1,"天人数为",num) k=0 for k in range(num):  s.sendto(str(day+1).encode('utf-8'), address)s.close()

server.py:服务端接收初始数据和每个用户发送的数据

# -*- coding: utf-8 -*-import socketimport lotteryaddress = ('127.0.0.1', 31500)s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)s.bind(address)list=[]data, addr = s.recvfrom(2048)data = data.decode('utf-8')print ("received:", data, "from", addr)dic=eval(data)x=dic['x']y=dic['y']z=dic['z']m=dic['m']n=dic['n']k=0preday = 1while True: k += 1 day, addr = s.recvfrom(2048) if not day:  print ("client has exist")  break if preday != day:  list.append(k-1)  preday = day day = int(day.decode('utf-8')) x -= lottery.check(x,y,z,m,n,k,day,list)s.close()

lottery.py:抽奖程序算法

#Filename:lottery.pydef check(x,y,z,m,n,k,day,list): #估计到来当天的人数和奖品的个数 if day == 1 or day == y:  e_x = z  e_people = n elif day == y:  e_x = x  e_people = n else:  e_x = x/(y+1-day)  e_people = sum(list)/len(list)   #中奖间隔 length = int(e_people/e_x) lucky = 0 if x>0 and k%length == 0 :  #print(x,"第",k,"个中奖")  lucky = 1 print("第",k,"个--第",day,"天--是否中奖--",lucky) return lucky

源码下载:python实现抽奖小程序

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


  • 上一条:
    Python基于scipy实现信号滤波功能
    下一条:
    Python常见数据类型转换操作示例
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在python语言中Flask框架的学习及简单功能示例(0个评论)
    • 在Python语言中实现GUI全屏倒计时代码示例(0个评论)
    • Python + zipfile库实现zip文件解压自动化脚本示例(0个评论)
    • python爬虫BeautifulSoup快速抓取网站图片(1个评论)
    • vscode 配置 python3开发环境的方法(0个评论)
    • 近期文章
    • 在windows10中升级go版本至1.24后LiteIDE的Ctrl+左击无法跳转问题解决方案(0个评论)
    • 智能合约Solidity学习CryptoZombie第四课:僵尸作战系统(0个评论)
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2018-04
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2022-01
    • 2023-07
    • 2023-10
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客