中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python如何實現抽獎小程序

發布時間:2020-08-03 11:50:30 來源:億速云 閱讀:278 作者:小豬 欄目:開發技術

小編這次要給大家分享的是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如何實現抽獎小程序的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

清徐县| 浪卡子县| 松溪县| 马关县| 田阳县| 兴宁市| 新兴县| 武陟县| 太仆寺旗| 白水县| 温州市| 西安市| 莱州市| 哈密市| 吉安市| 津市市| 隆德县| 宁海县| 安宁市| 孟村| 舟曲县| 同仁县| 治多县| 靖远县| 泽州县| 壶关县| 邳州市| 阿勒泰市| 江达县| 旺苍县| 金湖县| 阿合奇县| 恩施市| 民乐县| 龙岩市| 延边| 齐河县| 蓝田县| 乾安县| 沅江市| 沙河市|