#1 - 2024-1-30 20:57
CureDovahkinn🤔 (プリキュアなりたい)
洗澡的时候想到,那些用随机数生成器抽奖的,抽到不喜欢的再抽一下吃瓜群众也不知道,比较在意公平的就是直播抽或者发个视频抽奖,但是太麻烦了,于是就有了这个想法。

就很简单,用户预约一个时间,服务器生成一个随机数种子,随机数种子只有这个时间之后才能被看到,服务器会给用户一个凭据。
要发奖的人把这个凭据公布出去,所有人都能在预约时间后看到随机数种子,然后开奖的时候根据种子生成随机数。

主要需求就一个,在宣布抽奖之后抽奖结果不受发奖人影响。

不知道这里面有没有问题,我觉得除了没啥用以外应该没啥问题(bgm38)

update:把种子hash加上了, 更加天衣无缝了,虽然无意义(bgm38)

下面是一个预约链接,2024-02-06开奖,这个楼里面回复主要楼层里的抽3个人送上新年的祝福
https://rngseed.dovahkiin.top?id=388717900112855633

已经到期的种子:https://rngseed.dovahkiin.top/?id=388717428543062609
范围和数量一样的话,生成的随机数应该都是一样的。

狗屎代码:https://github.com/shadowdreamer/hash-seed
随机种子是short-uuid生成的,
随机数算法来自这个项目:https://github.com/skratchdot/random-seed
#2 - 2024-1-30 21:00
(表达能力极差)
有趣,但是随机算法固定/公开吗
#2-1 - 2024-1-30 21:11
CureDovahkinn🤔
紧急上传GitHub(bgm38)
#3 - 2024-1-30 21:11
(DD雷达搜寻中...?)
我倒想怎么利用这个伪随机机制去获得一个事先确定的随机数(bgm38)
#3-1 - 2024-1-30 21:13
CureDovahkinn🤔
用线性同余法特地查过,有现成的轮子
#4 - 2024-1-30 21:18
太麻烦了,可以用未来某个时间各大股市指数尾数拼接做种子
#4-1 - 2024-1-30 21:26
CureDovahkinn🤔
自己生成个uuid就好了,主打不求人
#4-2 - 2024-2-6 13:01
CureDovahkinn🤔
祝班友新年发大财(bgm24)
#5 - 2024-1-30 21:31
也许更好的想法(?):固定每 10 分钟生成一次随机数,对所有人可见,可以查看历史。抽奖只能选定一个未来时间,不能现 roll。
#5-1 - 2024-1-30 21:57
CureDovahkinn🤔
免费的存储免费的worker不要上强度了(bgm38)
#5-2 - 2024-2-6 13:01
CureDovahkinn🤔
祝班友新年发大财(bgm24)
#6 - 2024-1-30 22:12
(life goes on and on..)
听起来有趣但感觉没啥用(bgm38)
#6-1 - 2024-1-31 00:31
香风
用处太少,可替代的方法也多
#7 - 2024-1-30 23:11
(迷子でもいい、迷子でも進め。)
期待 lz 的祝福。
#8 - 2024-1-30 23:47
(いつか忘れる本の題名)
分母一下
#9 - 2024-1-31 00:49
(Nice Fever)
该搞个每分钟生成100个随机数的网站了(bgm38)
用法:抽奖时间为明天中午十二点,用xx网站12点整的第32个随机数作为种子,用xxx算法进行抽奖
网站里面再集成一点经典随即算法,用户上去直接可以验证(bgm38)
#10 - 2024-1-31 01:51
(私、気になります!)
删除了回复
#11 - 2024-1-31 01:56
(Search your feelings. You know it to be true.)
那这得建立在用户信任网站不会改凭据对应的种子的基础上。

更好的方法是凭据包含种子的secure hash。保证种子没改
#11-1 - 2024-1-31 11:45
CureDovahkinn🤔
一开始我是这么想的, 用argon2算一下hash做凭据, 后来感觉不如直接用数据库自动给的主键算了,还不占用服务器cpu计算时间,感觉可以加上看看
#12 - 2024-1-31 02:00
(私、気になります!)
用股票指数对人数直接求余数岂不美哉?
毕竟是公认的混沌系统,几乎没有任何暗箱操作的可能。
一般的抽奖人在刚看到楼主这个方案时,或许还是会有所怀疑。
#12-1 - 2024-1-31 11:47
CureDovahkinn🤔
高频更新的api好像不免费(bgm38)
#13 - 2024-1-31 08:06
(Life, what is it but a dream?)
但实际上这个种子一开始就是知道的,想要攻击的话也是有可能的(虽然不一定能100%中,但是可以做到不公平)
建议看一下Commitment scheme,简单来说就是种子还是提前预定的,不过其他人看不见,最后所有人都可以验证你用的是否是最开始的种子。
#14 - 2024-1-31 08:18
(Life, what is it but a dream?)
以及另一个让整个过程完全确定性的想法(也就是说是完全是由用户抽奖的行动决定,毕竟楼主的这个还是有最开始的种子这个自变量)
使用所有抽奖者的信息(比如用户id),使用一个固定方法排序(比如用用户抽奖时间),然后给全拼接起来hash了(当然肯定要用SHA3这样的安全Hash算法),最后mod一下就行了
#14-1 - 2024-1-31 11:52
CureDovahkinn🤔
加用户id整个整个系统又复杂了, 一开始打算公开种子的hash用以之后验证的, 后来觉得没必要, 现在可以加上
#14-2 - 2024-2-3 22:18
CureDovahkinn🤔
加了个sha-256,自带算法没sha3就算了(bgm38)
#14-3 - 2024-2-6 13:01
CureDovahkinn🤔
祝班友新年发大财(bgm24)
#15 - 2024-2-5 09:54
让我看看
#16 - 2024-2-6 13:00
(プリキュアなりたい)
(bgm38)开奖啦