- 29
- 0
如何公平的抽奖?
简化一下问题,我们不考虑任何权重,就单纯的从50个人的池子里,随机选中5个人中奖。。
就类似于幼儿园摇号一样的情景。
各位觉得怎么样做才能算公平呢?
我自己写了个python的,感觉也不算绝对的公平..
// 请把代码文本粘贴到下方(请勿用图片代替代码)
import random
# craete a lists, sample 50 person
total = 50
# to ensure the process will cannot cheat, may add some secure method, like md5(username+ some real random info + slat),
# use it as user info, so the code admin will only see some md5 info, but not the user's name stuff
# here for demo, just use number to represent a person
persons_id = range(1, total + 1)
print(persons_id)
def getRandomSeed(i):
# get a int random nubmer
seed = generateRandomint()
# if this seed not taken
if checkSeed(seed):
result = {"personID": i, "seed": seed}
return result
else:
# if already taken, recursive call it self
return getRandomSeed(i)
# record the seeds
seed_lists = []
def checkSeed(seed):
# check if the seed already taken or not.
if seed not in seed_lists:
seed_lists.append(seed)
return True
else:
return False
def generateRandomint():
return random.randint(1, total)
# generate random int number for every person
persons_pool = map(getRandomSeed, persons_id)
# now, we can pick a range, like say, before the process, we all agreed that seed number is between 20 and 25 are the winners.
# so if your seed is in this range, you win.
print(persons_pool)
希望朋友们指点一下,到底怎么实现一个绝对公平的抽奖?
1
打赏
收藏
点击回答
您的回答被采纳后将获得:提问者悬赏的 11 元积分
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
