求教:随机数生成机制的设计思路

dinghun8leech 2014-05-12 12:47:48
要求:
1、在系统宕机、断电、系统时间被篡改的情况下,仍保证绝不重复;
2、性能不能差,要支持100个并发;

在此向各位前辈求教一下设计思路,如何满足上面两点要求。
我想过一些简单的方法,比如将生成的随机数持久化到dbms或本地文件中,但check、记录时的io与线程同步开销会很大。
...全文
636 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
ilmlife 2014-05-14
  • 打赏
  • 举报
回复
引用 12 楼 preferme 的回复:
[quote=引用 11 楼 u010479715 的回复:] 怕系统时间被修改 为什么不直接在使用时间戳生成随机数后直接把时间戳写内存同时写入文本(怕IO开销大就不写那么频繁) 每次生成随机数时从内存获取时间戳(和系统时间戳比较)以时间戳生成随机数 不晓得这个思路对不对,会有会有那么点用
楼主要不重复的随机数[/quote] 根据时间戳生成的
冰思雨 2014-05-14
  • 打赏
  • 举报
回复
引用 11 楼 u010479715 的回复:
怕系统时间被修改 为什么不直接在使用时间戳生成随机数后直接把时间戳写内存同时写入文本(怕IO开销大就不写那么频繁) 每次生成随机数时从内存获取时间戳(和系统时间戳比较)以时间戳生成随机数 不晓得这个思路对不对,会有会有那么点用
楼主要不重复的随机数
ilmlife 2014-05-14
  • 打赏
  • 举报
回复
怕系统时间被修改 为什么不直接在使用时间戳生成随机数后直接把时间戳写内存同时写入文本(怕IO开销大就不写那么频繁) 每次生成随机数时从内存获取时间戳(和系统时间戳比较)以时间戳生成随机数 不晓得这个思路对不对,会有会有那么点用
冰思雨 2014-05-14
  • 打赏
  • 举报
回复
用UUID吧,这个最简单不过了。
mj100100 2014-05-14
  • 打赏
  • 举报
回复
Ramdon就可以喇
  • 打赏
  • 举报
回复
没有存储介质储存,重启后当然找不到了。
dinghun8leech 2014-05-14
  • 打赏
  • 举报
回复
引用 13 楼 u010479715 的回复:
[quote=引用 12 楼 preferme 的回复:] [quote=引用 11 楼 u010479715 的回复:] 怕系统时间被修改 为什么不直接在使用时间戳生成随机数后直接把时间戳写内存同时写入文本(怕IO开销大就不写那么频繁) 每次生成随机数时从内存获取时间戳(和系统时间戳比较)以时间戳生成随机数 不晓得这个思路对不对,会有会有那么点用
楼主要不重复的随机数[/quote] 根据时间戳生成的 [/quote] 我不怕改时间,只怕以时间为seed去生成随机数,碰到时间往前改的情况,会产生重复随机数。
朗晴 2014-05-13
  • 打赏
  • 举报
回复
不懂得,过来瞅瞅。。
dinghun8leech 2014-05-13
  • 打赏
  • 举报
回复
引用 4 楼 fangmingshijie 的回复:
把生成的数作为key放到map,放之前先根据这个数查询一下。有就继续随机生成,没有就put。
那,重启之后呢?
dinghun8leech 2014-05-13
  • 打赏
  • 举报
回复
引用 2 楼 evangelionxb 的回复:
还有一个楼主做这个做什么?

UUID.randomUUID();
满足不了您的需要么?
感谢解答,uuid确实可以。
  • 打赏
  • 举报
回复
把生成的数作为key放到map,放之前先根据这个数查询一下。有就继续随机生成,没有就put。
sunbo624 2014-05-12
  • 打赏
  • 举报
回复
UUID肯定能满足
evangelionxb 2014-05-12
  • 打赏
  • 举报
回复
还有一个楼主做这个做什么?

UUID.randomUUID();
满足不了您的需要么?
evangelionxb 2014-05-12
  • 打赏
  • 举报
回复
硬件读取 CPU温度, 根据电路噪声, 产生随机数前使用NTP协议对时间进行校队。 根据以上参数使用 一定算法得到uuid。 http://wenku.baidu.com/link?url=RM5JkBwjESeZGsJaJjdPTsRGaG2u2mBia9_mt-PVbrELEHiHvsapcrdfhvWFOqWoENBB67-AaYqTCCIqenn-m40579WTOqHHUdSJw4cVl6q

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧