596164296
V2EX  ›  程序员

关于随机时间产生算法

By 596164296 at 2022 年 8 月 13 日 · 2412 次点击

目前在做一个招标网站,每个标的都是有开始时间与结束时间,只要用户在这个时间段下单即可。 领导要求每个标的的结束时间需要随机提前几百毫秒结束,这个随机过程可以通过标的基础信息推算出来,并且要一般人反推不出来。 我能想到的基础信息包括:标的编号、开始时间、结束时间、标的物金额、标的物数量(一个标的对应多个标的物,多个标的物是一样的)。 小弟才疏学浅,想请教各位大神,如果是您您会怎么做这个随机算法。

11 条回复  •  2022-08-14 14:01:18 +08:00
7zlid
   1
7zlid  
   2022 年 8 月 13 日 via Android
把你说的那几个变量加盐取 hash
前三位转十进制除以 4
xiangyuecn
   2
xiangyuecn  
   2022 年 8 月 13 日
花里胡哨,直接加一个字段,多存一个结束随机时间🐶 真随机 一点都不作假🐶🐶🐶
learningman
   3
learningman  
   2022 年 8 月 13 日 via Android
直接生成随机数不行吗
kongkx
   4
kongkx  
   2022 年 8 月 13 日 via iPhone
hash + 取模? 这个随机数有这么讲究吗?
Jooooooooo
   5
Jooooooooo  
   2022 年 8 月 13 日
直接用你计算时的当前的毫秒时间就行, 这个足够随机.
wyx119911
   6
wyx119911  
   2022 年 8 月 13 日
直接用“标的编号”做下 hash ,再取模到 100 - 900 的范围
superrichman
   7
superrichman  
   2022 年 8 月 13 日
这简单,提前 1 秒结束就行。因为还有网络延迟,把延迟考虑进来,到你的服务器上就是随机的几百毫秒了 /doge
Slurp
   8
Slurp  
   2022 年 8 月 13 日
hash + 取模。比如 id * 114514 + (end * 5147 - start * 305) + price * 191981 + count * 47297 再 + 100 再 % 721 。跑了点随机数据出来 max 820 min 100 avg 460. 并且数据少的话,波动很大。
qwertyegg
   9
qwertyegg  
   2022 年 8 月 14 日
任意的 trapdoor 函数都没法反推

稍微改一下就实现你功能了
kevin1
   10
kevin1  
   2022 年 8 月 14 日
> 这个随机过程可以通过标的基础信息推算出来

能推算出来的就不叫随机了。
多取几个字短按照某种规则计算几次就行了吧,反推的难度应该会很高。
whyhowwhat
   11
whyhowwhat  
   2022 年 8 月 14 日 via iPhone
找个单向加密算法,随机只是伪需求
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
© 2026 V2EX · 47ms · 3.9.8.5