美育课堂 钢琴课抽签规则

2019-05-04  本文已影响0人  zidanessf

参与抽签的总人数NUM = 441,通过以下流程抽取25名幸运同学:

  1. 获取2019年5月4日开盘时(北京时间5月4日 9:30pm)的纳斯达克指数N1,道琼斯指数N2
  2. 取N1*N2的前5位数,并将其转化为字符串Skey
  3. for k = 1:25
    将Skey与k合并为新的字符串Skey',对Skey'进行一次SHA1运算,得到幸运数字lucky
    获奖编号 = mod(lukcy,NUM)

抽奖结果于5月4日晚11点前公布

说明: 由于两个股票指数无法精准预测,而由于SHA1运算对输入的敏感特性,导致幸运数字lucky是不可预测的!因此,以上算法保证了抽签的公平性。此外,当股票指数公布后,任何同学都可以根据以下源码重复进行抽签,抽签的流程是完全公开的。

### 抽签代码
from googlefinance.get import get_code
from hashlib import sha1
NUM = 441
NASDAQ = #2019年5月4日纳斯达克开盘指数 https://finance.yahoo.com/quote/%5EIXIC/
DJI = #2019年5月4日道琼斯开盘指数 https://finance.yahoo.com/quote/%5EDJI?p=^DJI
Skey = (str(NASDAQ*DJI))[0:5]
for k in range(25):
    luckeyNum = sha1((Skey + str(k)).encode())
    luckeyNum = int(luckeyNum.hexdigest(),16)
    TheChosenOne = luckeyNum%NUM
    print('恭喜第{0}位同学入选!'.format(TheChosenOne))

再次说明:有些同学不理解为什么要搞这么复杂的抽签,直接随机数不就了事了嘛。然而,随机数的弊端是无法证明是否是黑箱操作。以上方法通过不可预知的股票指数,以及算法上的可重复可验证性,从技术上杜绝了黑箱操作。
结果公布:NASDAQ = 8092.88 DJI = 26379.14,代入以上程序,得到以下幸运同学名单:


image.png
上一篇下一篇

猜你喜欢

热点阅读