概述
---
抽奖的公平性向来是抽奖活动中最受人质疑的部分。由于涉及随机数的选取,网上的抽奖活动几乎无法保证公平性,因为很难保证中奖号码是随机生成而非平台人工选取的,也很难保证平台是否删掉了一部分用户的中奖资格而未告知用户。例如:前阵子支付宝锦鲤活动就有人怀疑中奖者是否是钦定的;前阵子王思聪在微博平台上的抽奖,中奖者男女比例为 1:112,甚为蹊跷。
为了解决抽奖公平性的问题,消除暗箱操作的可能性,我们特别设计了以下抽奖过程。
什么样的抽奖是公平的
抽奖过程可以描述为从 0~N-1 (N为奖券总数) 的整数中抽取一个或多个随机整数的过程。除了抽奖算法和抽奖过程需要公开透明之外,一个公平的抽奖过程所使用的随机数(其实是伪随机数)应具有如下的性质:随机数的生成过程不需要依赖于用户对本网站或者任何第三方平台的信任。
事先无法预测。
事后公开可查。
概率上满足均匀分布。
为了保证性质1~3,我们选择使用比特币区块的哈希值来作为我们的随机数种子;性质4
我们的抽奖算法
假设奖券编号是连续发放的整数。我们的的抽奖算法如下:选取指定时刻(即抽奖时间)后被挖出的第一个比特币区块的哈希值作为随机数种子,记作 S。
用 SHA-256 算法计算 S 的的哈希值 H,然后把 H 作为16进制数字转换为长整数 L。
W = L % N 为中奖的奖券编号,其中 N 为总奖券数量,%为求余数。
如需抽出 M 个中奖者,则设新种子为 S = H 并且重复 2、3 两步,直到抽出 M 个不重复的中奖者为止。
上述抽奖步骤实际上是用完全公开可验证的方法生成了一个或多个不可控的随机数,其
最后
以上就是奋斗日记本为你收集整理的python 抽奖 完全公平的随机数算法_如何设计一个抽奖算法,能达到真正的公开公正和权威?...的全部内容,希望文章能够帮你解决python 抽奖 完全公平的随机数算法_如何设计一个抽奖算法,能达到真正的公开公正和权威?...所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复