双十一给 V 友抽一波红包
极客时间双十一活动,全场五五折,并且从公众号「极客时间优惠」购买课程的话,再返现 24 、36,也就是返现全部归还给大家。
原价 68 的课,返 24,到手价仅 14。
原价 99 的课,返 24,到手价仅 31。
原价 129 的课,返 36,到手价仅 34。
原价 199 的课,返 36,到手价仅 74。
详细的购买规则参考 极客时间全场课程 55 折基础上再返 24 、36 元,全网最低

奖品
奖品 1:100 元微信红包,所有下边的回帖中抽取一位。
奖品 2:300 元微信红包,所有下边的回帖中抽取一位,并且开奖前必须在「极客时间优惠」上购买过课程,成功得到了返现。可以购买原价 68 元的课程,到手价仅 14。(新人首单 1 元课程不算,必须再在「极客时间优惠」公众号上购买一门原价 45 元以上课程)
截止时间
2020.11.12 22:00
抽奖算法
采用 我们是如何用科学的方法保证抽奖的公平性的 介绍的算法。代码如下
import hashlib def get_winners(min_n, max_n, num_win, key): res = key winners = set() while len(winners) < num_win: res = hashlib.sha256(bytes(res, encoding='utf-8')).hexdigest() winners.add(int(res, 16) % (max_n-min_n+1) + min_n) return winners
此函数的输入参数分别是:min_n 为最小数,这里取 1;max_n 为截止时间的最大数;num_win 为指定的中奖人数,这里取 2;key 为截止时间后被挖出的第一个比特币区块的哈希值,看 这里 的哈希值。
例如,如果那天的 hash 值是 fcd10ecf02b5353dfd7d36b0452b7a23a9d86ae1a1820a65daddced707fd34fc,最大数为 300,那么就调用
print(get_winners(1,300,2,'fcd10ecf02b5353dfd7d36b0452b7a23a9d86ae1a1820a65daddced707fd34fc'))
得到的第一个数字为获得奖品 1 的数。
得到的第二个数字为获得奖品 2 的数,如果该位 V 友没有在「极客时间优惠」上买过课,那么顺延层直到一位买过课程的 V 友。
ps:多次回帖的 V 友,算第一次回帖的层。如果抽到非第一次回帖的层,同样进行顺延。