能力值:
( LV2,RANK:10 )
2 楼
看了楼主的帖子,顿时涨了不少见识,多谢分享。
能力值:
( LV4,RANK:40 )
3 楼
LZ的方法还用到Pi(圆周率),这是难于做到的。
这样就简单了,设想有大量的黑子和白子放在一个容器里,搅合搅合,随便拾取,黑子计一个1白子计一个0,随机数不就有了吗。这种方法计算机是很容易模拟的。
能力值:
( LV3,RANK:20 )
4 楼
在路上的人,也可能使用车,轮胎是圆的,所以使用的是Pi(圆周率)。
你说的方法,我不知道怎么用电路模拟。
能力值:
( LV4,RANK:40 )
5 楼
我没研究过用电路模拟,我说是用程序模拟,具体方法你可以看看我的帖子“新型随机函数的制作”和“乱排随机函数源码举例”。
有一段路,被涂成黑白两色,每隔1米颜色切换。有一个人走在这条路上(初始位置不确定),每走Pi(圆周率)米,查看脚下路面颜色,黑色记1,白色记0,于是,这个人就可以无限采集比特串了。
你说完全是规律性的行为,得到的比特串也是固定的东西,毫无随机可言。
能力值:
( LV3,RANK:20 )
6 楼
逻辑处理总是规律性行为,你的方法也一样。
产生随机数的根本是保证物理上随机,然后经过电路和软件不断放大这种随机。
能力值:
( LV4,RANK:40 )
7 楼
我的方法能得到乱码,不管它什么随机不随机的。
而你说的方法,多次走pi米,只能得到周期性的变化,太不随机了?
能力值:
( LV2,RANK:10 )
8 楼
通常的(伪)随机数算法是给定一个种子就能生成一个(伪)随机序列,只要序列足够长,随机性就会比较好,并不需要“物理上的随机”,因为实际上取得“随机的种子”难度是很大的,而且也没有必要。所谓越好的生成算法(或者生成器)就是生成的序列越接近“真”随机序列。
至于物理上的随机。对于电路来说,可以取某个物理量值作为种子,比如当前的电流值,它一定是符合某种分布的随机量。
至于你说的那个pi方法。随机的根本实际上是初始位置随机,那么这个种子又从哪里来呢?如果是人选的,那么这就不能称之为随机。所以说生成的仍然是一个伪随机序列,而且这个伪随机数生成器的质量有待商榷。
至于加密方面,生成的密文随机性越好加密算法的性能越好,密钥的随机性越好生成算法越好。所以。。。最后一句话我没太看懂,难道寻找好的加密算法能成为寻找好的随机算法的方法么?。。。这两个难度好像差不多诶。。。
我现在只有一些关于密码学的远古的记忆了,应该有很多说错的地方。
能力值:
( LV4,RANK:40 )
9 楼
楼上说的随机种子难求吗?系统时间、开机以来的cpu脉动数等都是现成可利用的随机种子,不用什么电流。
随机函数再好也解决不了相邻输出数据之间的关联问题。而乱排随机函数就没有此缺陷,另一特点是绝没有死点,而后者是一般随机函数需要回避的。
能力值:
( LV2,RANK:10 )
10 楼
最后补充一下。楼主的算法实际上就是(k*n mod 2)这个性能是非常不好的。
能力值:
( LV2,RANK:10 )
11 楼
所谓的系统时间、CPU脉动数就是所谓的“真”随机么。至于电流这个我只是顺着楼主的思路来说。
好的算法是不依赖种子的好坏,我只是想表达这点。至于所谓的乱排,现在没有时间去研究这个。大概看了一下,应该是一种对种子的HASH。
能力值:
( LV3,RANK:20 )
12 楼
用硬件产生随机数种子,用软件(密码算法)产生随机数,这是业界一般做法。
利用系统时钟等做种子,种子空间不够大,一般使用在安全要求不是太高的地方也没有问题。
使用当前电路的电流值做随机种子,电路实现会复杂,至少数字电路实现会比较复杂。
前面介绍的方法,随机性确实部分依赖于初值,但初值是由电子元器件误差及用户人为操作综合决定,使用k*n mod 2这个算法主要是电路实现简单,且放大效果还不错。其实这个问题还是有很多值得研究的地方。例如,把“1米”换成“1米左右”,把“Pi(n)米”换成“Pi(n)米左右”,如果这里的“左右”指正态分布,那么如何该选择n?标记“0”“1”的时候,0,1状态该持续多久才认为是0,1?这些都是比较复杂的问题。
能力值:
( LV2,RANK:10 )
13 楼
。。。。
能力值:
( LV3,RANK:30 )
14 楼
关键是生成算法的保密,种子是否“真”随机不重要。
能力值:
( LV4,RANK:40 )
15 楼
楼上说的没错,但算法是公开的,种子就需要保护了,真不真的无所谓。