每个参与者给一个序号作为抽奖码。最终抽 6 个中奖号码。需求就是公平,无法暗箱操作,中奖号码均匀分布
现在的算法是这样的
a=某日的上证指数收盘数字
b=(总参与人数除以 6 )取商
c=(总参与人数除以 6 )取余数
第一中奖号码=( a*100 )^2 除以( b+c )取余数+1
第二中奖号码=第一中奖号码+b
第三中奖号码=第二中奖号码+b
第四中奖号码=第三中奖号码+b
第五中奖号码=第四中奖号码+b
第六中奖号码=第五中奖号码+b
![]() | 1 zqqian 2018-12-27 16:20:07 +08:00 via iPhone 不应该除以 b+c 应该除以一个质数 |
![]() | 2 swulling 2018-12-27 16:21:30 +08:00 via iPhone 用 Python 的 random choice 就好了,拿上证指数作为种子 何必自己写 |
3 whileFalse 2018-12-27 16:31:41 +08:00 ![]() 不合理。 举个例子: ( a*100 )^2 的尾数只能是 1,3,4,5,6,9,不可能为 0,2,7,8 如果 B+C=10,则无论 a 为任何值时,序号尾号 1,3,8,9 的人都不可能中奖。 |
4 across 2018-12-27 16:32:05 +08:00 如果硬要说有缺点,那就是后续中奖号码? 因为第一个发出去后,结果就出来了。反正和你相邻的中奖了,后面就知道判断不用得开奖就可以回去睡觉了。 发奖号码估计是真手动随机发吧。 |
5 whileFalse 2018-12-27 16:33:58 +08:00 @across 这倒有可能是个需求。比如不希望一个部门拿到一堆奖,其他部门拿不到。 |
6 546669204 2018-12-27 16:42:02 +08:00 ![]() |
![]() | 7 lance6716 2018-12-27 17:36:45 +08:00 第一眼看到的漏洞就是均匀分布不是强行均匀啊…… |
8 yurang 2018-12-27 17:48:36 +08:00 - 随机数的性质: - 随机性:不存在统计学偏差,是完全杂乱的数列(弱伪随机数) - 不可预测性:不能从过去的数列推测出下一个出现的数(强伪随机数) - 不可重现性:除非将数列本身保存下来,否则不能重现相同的数列(真随机数) |
![]() | 9 xiaochocking 2018-12-27 17:53:06 +08:00 均匀分布是。。? 真随机还怎么均匀 |
![]() | 10 geelaw 2018-12-27 19:01:06 +08:00 via iPhone 乱编一个算法不像是能满足要求。 一个很明显的错误在于这几个号码不独立。 |