探讨:随机序列的问题,要求也许有点高,给个思路也可以

fronz 2008-11-13 09:10:12
先说要求:

1.
可控长度的随机序列生成算法,数量最少要要上千,最高到上万。

2.
需要生成四组,四组具有一定的不相关性。(囧,这个汗,难道需要四种随机算法?)

3.
要有一定的效率,呵呵,至少不能让我运行一个小时才出来一组。(嗨,算了,即使一个小时能满足第二个条件的,我也要)

4.有源程序的,尽量给VC的,其他的看不太明白,即使是VB。其他的就不说了,当然随机序列需要在一个范围内(例如1-1000,这个也是可变的,不过这个好解决)
srand((unsigned)time(NULL))之类的,没有特别的想法,就别提了,我在用着呢,线性同余法,没太高明白,重复率等怎么控制?


我说一下我目前的一些想法,我们都知道,计算机只能生成伪随机数,而且,其产生的随机序列也是根据某种算法得出,如果只获取某几个随机数,并保证
符合要求,比较容易,一些密钥生成算法都能满足。

但我这里的要求,实际上是所产生的四组随机数的分布要具有一些独立性。我理解,要求4组序列完全不相关很难,如果用一种算法,短时间内要求4组序列不同都
不容易(这是由一些算法与机器时间的相关性决定的)。所以,我目前没什么思路来解决这个问题。


自去年注册后,只来了两三个月,尽管有一年多没来了,不过我分数还是有很多,这个,不用担心。呵呵。
这一次是头一回认真提出一个问题,如果有满意思路和算法,可另外开贴加100分。
...全文
283 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
superdiablo 2008-11-15
  • 打赏
  • 举报
回复
强度高的随机数只能借助于专门的硬件支持。除了采集白噪声,其他的信号比如人的按键间隔、系统温度等都满足一定的统计规律,算不上真正的随机。看你的要求有多高了。如果非得白噪声,能产生白噪声的硬件应该还是有的,很多信号在去掉主信号后都是留下白噪声。
fronz 2008-11-14
  • 打赏
  • 举报
回复
to:蒋晟
稀客,晚上好,非常感谢回答我的问题。

非常好的一个建议,其实我也考虑过借助硬件产生随机序列的问题。不过不太清楚具体怎么操作,能再详细一点么?

我来这里原本想借助不同算法解决,可怎么弄也凑不齐4组。这个问题的提出是想研究一个理论问题。
而用一种算法在数量很大的随机序列中会形成一个事实上的分布规律,我不想使这些数据具有太多的相关性。
想办法让它们尽量具有某种独立性。

我再听听其他建议。
whoo 2008-11-14
  • 打赏
  • 举报
回复
时间,尤其是高精度的时间,可以作为一个引子。
键盘,鼠标的序列,可以作为一个引子。 一些加密软件利用这一措施来生成随机数,要求你使劲的砸你的键盘和胡乱移动鼠标。
内存特征。如显存,也就是桌面所有颜色的特征值,可以作为一个引子。
来自网卡上的原始数据,可以作为一个引子。

风扇速度,主板温度......, 等等等等,反正随时变化的系统特征,都可以参考进来,甚至当前进程中收到的windows消息的序列。看你的想象力吧。


linux下有现成的随机数设备 /dev/random, windows下欠缺些,但是一些加密相关的组件也提供随机数功能。如果你的项目真的需要真随机数的话,也许可以考虑建立一个独立的随机数服务,随时监控系统状态收集熵值。
fronz 2008-11-14
  • 打赏
  • 举报
回复
没人给点建议么?

再等一两天结贴。
蒋晟 2008-11-13
  • 打赏
  • 举报
回复
采集一个热噪声或者电流噪声作为随机数发生器

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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