python实现抽奖小程序

本文实例为大家分享了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 socket
import random

address = ('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 socket
import lottery

address = ('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=0
preday = 1
while 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.py

def 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实现抽奖小程序

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

(0)

相关推荐

  • python实现的简单抽奖系统实例

    本文实例讲述了python实现的简单抽奖系统.分享给大家供大家参考.具体实现方法如下: #!/usr/bin/env python #coding=utf-8 from Tkinter import * import time import random class App: def __init__(self,master): frame = Frame(master) frame.pack() v = StringVar() self.e = Entry(frame,textvariable

  • python实现公司年会抽奖程序

    本文实例为大家分享了python实现年会抽奖程序的具体代码,供大家参考,具体内容如下 发一下自己写的公司抽奖程序. 需求:公司年会要一个抽奖程序,转盘上的每一个人名是随机中奖的,中奖后的人不可以再次中奖,按住抽奖,就会一直在转,放开后,要再转一两圈才停. 刚好自己在学python cocos2d,就用这个刚学的东东,直接上源码 # coding:utf-8 # import sys # import os # sys.path.insert(0, os.path.join(os.path.dir

  • 详解python--模拟轮盘抽奖游戏

    题目: 轮盘分为三部分: 一等奖, 二等奖和三等奖; 轮盘转的时候是随机的, 如果范围在[0,0.08)之间,代表一等奖, 如果范围在[0.08,0.3)之间,代表2等奖, 如果范围在[0.3, 1.0)之间,代表3等奖, 模拟本次活动1000人参加, 模拟游戏时需要准备各等级奖品的个数. import random RewardCount = { '一等奖':(0,0.08), '二等奖':(0.08,0.3), '三等奖':(0.3,1.0) } def RewardGet(): num =

  • python实现转盘效果 python实现轮盘抽奖游戏

    本文实例为大家分享了python实现转盘效果的具体代码,供大家参考,具体内容如下 #抽奖 面向对象版本 import tkinter import time import threading class choujiang: #初始化魔术方法 def __init__(self): #准备好界面 self.root = tkinter.Tk() self.root.title('lowB版转盘') self.root.minsize(300, 300) # 声明一个是否按下开始的变量 self.

  • Python利用带权重随机数解决抽奖和游戏爆装备问题

    关于带权随机数 为了帮助理解,先来看三类随机问题的对比: 1.已有n条记录,从中选取m条记录,选取出来的记录前后顺序不管. 实现思路:按行遍历所有记录,约隔n/m条取一个数据即可 2.在1类情况下,还要求选取出来的m条记录是随机排序的 实现思路: 给n条记录,分别增加一列标记,值为随机选取的1至n之间的不重复数据. 3.区别于1,2类问题, 如果记录是有权重的,如何结合权重去随机选取. 比如A的权重为10, B的权重股为5, C的权重为1, 则随机选取4个时可能应该出现AABB. 第3类问题便是

  • python实现大转盘抽奖效果

    本文实例为大家分享了python实现大转盘抽奖的具体代码,供大家参考,具体内容如下 选择转盘中的某一个方框,来进行抽奖 import tkinter #导入线程模块 import threading import time #导入代码的sleep 代码休眠 root = tkinter.Tk() root.title('大转盘') root.minsize(300,300) #摆放按钮 btn1 = tkinter.Button(root,text = '樱桃',bg = 'red') btn1

  • python实现年会抽奖程序

    用python来实现一个抽奖程序,供大家参考,具体内容如下 主要功能有 1.从一个csv文件中读入所有员工工号 2.将这些工号初始到一个列表中 3.用random模块下的choice函数来随机选择列表中的一个工号 4.抽到的奖项的工号要从列表中进行删除,以免再次抽到 初级版 这个比较简单,缺少定制性,如没法设置一等奖有几名,二等奖有几名 import csv #创建一个员工列表 emplist = [] #用with自动关闭文件 with open('c://emps.csv') as f: e

  • python实现抽奖小程序

    本文实例为大家分享了python实现抽奖小程序的具体代码,供大家参考,具体内容如下 设计一个抽奖服务  背景:有x个奖品,要求在y天内发完:每天至少发放z个奖品:每天抽奖人数不定,事先会假设一个范围是m-n 举例:有100个奖品,要求5天内发完,每天至少发15个奖品:每天来抽奖的人估计是 2000-3000 人,希望奖品能够比较均匀,但随机的抽取出来. 接口要求:服务监听一个端口,测试程序不断连接,发送一个数字代表是第几天,比如第1-2000个请求发送1(模拟第一天来了2000人),第2001到

  • 基于Python编写一个微博抽奖小程序

    目录 导语 开发工具 环境搭建 先睹为快 原理简介 导语 带大家写个微博自动抽奖小程序吧,motivation和之前的B站自动抽奖小程序一样: 不想内卷了,整个B站全自动抽奖的小程序吧,万一不小心暴富了呢~ 废话不多说,让我们愉快地开始吧~ 开发工具 Python版本:3.7.8 相关模块: DecryptLogin模块: DecryptLoginExamples模块: 以及一些python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 先睹为快 首先,

  • 基于JavaScript实现简单的随机抽奖小程序

    对于抽奖这样的小程序使用诸如VB,Delphi等工具来实现会比较的方便,由于本人机器上没有装这样的应用程序,所以只能另寻其道.为了使抽奖程序能够无需配置平台直接可以在任何一台机器上运行,开发工具和编译运行工具也能够经可能简单(诸如text文本即可编辑,window系统自带的浏览器即可编译运行的情况),决定尝试使用javascript来做.本人对javascript的研究不深,平时主要用于网站开发中对来自客户端的数据进行有效性判断(基于安全性的考虑,安全性要求高的网站尽量使用服务器端语言对数据有效

  • 基于PHP实现简单的随机抽奖小程序

    一个抽奖小程序,概论可控,也可某个奖品在前端显示,而程序中根本不可能获得!把所有的概率x10后相加起来,新数组中每项的值等于它前几个的和加上它本身. 然后随即生成一个0到最大数之间的一个数,通过循环查看它属于那个区间,返回该区间的key. 代码如下 $prize = array( 1 => 3.5, //3.5%机率 2 => 2.5, 3 => 6, 4 => 2, 5 => 42, //42%机率 6 => 36, 7 => 2, 8 => 4, 9 =

  • php抽奖小程序的实现代码

    这个抽奖小程序,在实际的测试环境中也可以用到,比方说测试数据的查询在in条件下,要查询随机的5个id,然后在用ab去压测 复制代码 代码如下: <?php  /**   * "抽奖"函数   *   * @param integer $first    起始编号   * @param integer $last     结束编号   * @param integer $total    获奖人数   *   * @return string   *  */  function i

  • jquery 抽奖小程序实现代码

    用jquery实现抽奖小程序 这些日子,到处都可以看到关于微信小程序的新闻或报到,在博客园中写关于微信小程序的也不少.但是今天我要说的不是微信小程序,而是用简单的jquery写的一个好玩的抽奖小程序.最后介绍了后面关于抽奖小程序的一些后面更新的方向和Math.random的一些小知识.(最终结果保存在:http://runjs.cn/detail/rq3bbhto,点击可查看效果) 下面先看一个简单的抽奖小程序的例子: html: <div class="g-lottery-box&quo

  • 基于C#实现简单的随机抽奖小程序

    废话不多说了,直接给大家贴代码了.具体代码如下所示: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Sys

  • python实现聊天小程序

    本文实例为大家分享了python实现聊天小程序的具体代码,供大家参考,具体内容如下 我这里实现的是客户端与服务端进行通信的功能,比较简单,与上一篇文章的群聊不太一样. 服务端server.py #-*- coding:utf-8 -*- import socket, traceback, sys host = '' port = 51423 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.setsockopt(socket.SOL_

  • Python简单基础小程序的实例代码

    1 九九乘法表 for i in range(9):#从0循环到8 i += 1#等价于 i = i+1 for j in range(i):#从0循环到i j += 1 print(j,'*',i,'=',i*j,end = ' ',sep='') # end默认在结尾输出换行,将它改成空格 sep 默认 j,'*',i,'=',i*j 各元素输出中间会有空格 print()#这里作用是输出换行符 i = 1 while i <= 9: j = 1 while j <= i: print(&

  • python实现五子棋小程序

    本文实例为大家分享了python实现五子棋小程序的具体代码,供大家参考,具体内容如下 一.结合书上例子,分三段编写: wuziqi.py #coding:utf-8 from win_notwin import * from show_qipan import * maxx=10 #10行10列 maxy=10 qipan=[[0,0,0,0,1,0,0,2,0,0],[0,1,2,1,1,0,2,0,0,0],[0,0,0,0,1,1,0,2,0,0],[0,0,0,0,2,0,0,1,0,0

随机推荐