[问题] 透过金钥或自制乱数种子 产生0,1序列的方法

楼主: klly193746 (蝌蚪)   2016-05-25 22:30:49
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
问题(Question):
想透过输入金钥的输入 或是 自制的乱数种子
产生一组不规则01序列
且此01序列可以每次都产生一样的
想用在加密上 求解已在网络上找过资料
不过 找乱数种子都只有看到 srand(time(NULL));
没有找到 自制乱数种子教学文
作者: MOONRAKER (㊣牛鹤鳗毛人)   2016-05-25 22:36:00
那叫虚拟乱数 不叫乱数种子 搜寻虚拟乱数产生器
作者: Schottky (顺风相送)   2016-05-25 22:36:00
VC? MSDN 找 CryptoGenRandom functionLinux 的话用 /dev/urandom
作者: MOONRAKER (㊣牛鹤鳗毛人)   2016-05-25 22:53:00
其实你给srand()相同的数字就可以保证接下来结果相同了还不一定要用到高档的乱数产生器只要接着一直取乱数然后转二进制就好
作者: Caesar08 (Caesar)   2016-05-26 09:27:00
如果你用rand与srand,那你换compiler之后会有问题
作者: MOONRAKER (㊣牛鹤鳗毛人)   2016-05-26 10:28:00
咦这有随compiler不同的吗 o_O
作者: uranusjr (←這人是超級笨蛋)   2016-05-26 11:19:00
嗯标准没有规定 rand 要用什么算法, 所以可能会不同
作者: MOONRAKER (㊣牛鹤鳗毛人)   2016-05-26 15:51:00
起码都还是乱的吧 我想得到顶多是整数宽度不同还是说给同一种子不一定会有相同结果如果这样那就要把rand()换成自己写的乱数产生器例如xorshift 或更简单如IBM古早的 R *= pow(7,5)+k
作者: Caesar08 (Caesar)   2016-05-26 16:07:00
直接使用C++11里面的<random>就没这问题了
楼主: klly193746 (蝌蚪)   2016-05-30 03:17:00
目前应该是使用在srand里面加参数 另外在多一个参数是略过前面几个数字

Links booklink

Contact Us: admin [ a t ] ucptt.com