作者klly193746 (蝌蚪)
看板C_and_CPP
标题[问题] 透过金钥或自制乱数种子 产生0,1序列的方法
时间Wed May 25 22:30:49 2016
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
问题(Question):
想透过输入金钥的输入 或是 自制的乱数种子
产生一组不规则01序列
且此01序列可以每次都产生一样的
想用在加密上 求解已在网路上找过资料
不过 找乱数种子都只有看到 srand(time(NULL));
没有找到 自制乱数种子教学文
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.163.197.174
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1464186651.A.13A.html
1F:→ MOONRAKER: 那叫虚拟乱数 不叫乱数种子 搜寻虚拟乱数产生器 05/25 22:36
好的google中
2F:→ Schottky: VC? MSDN 找 CryptoGenRandom function 05/25 22:36
3F:→ Schottky: Linux 的话用 /dev/urandom 05/25 22:37
感恩 研究中
4F:→ MOONRAKER: 其实你给srand()相同的数字就可以保证接下来结果相同了 05/25 22:53
5F:→ MOONRAKER: 还不一定要用到高档的乱数产生器 05/25 22:53
6F:→ MOONRAKER: 只要接着一直取乱数然後转二进位就好 05/25 22:53
研究了好几天原来是搜寻关键字打错
另外 原来给srand()吃不同的值 会跑出不同的结果
程式已经写出来了 太感谢你了
※ 编辑: klly193746 (1.163.197.174), 05/25/2016 23:12:47
7F:→ Caesar08: 如果你用rand与srand,那你换compiler之後会有问题 05/26 09:27
8F:→ MOONRAKER: 咦这有随compiler不同的吗 o_O 05/26 10:28
9F:→ uranusjr: 嗯标准没有规定 rand 要用什麽演算法, 所以可能会不同 05/26 11:19
10F:→ MOONRAKER: 起码都还是乱的吧 我想得到顶多是整数宽度不同 05/26 15:51
11F:→ MOONRAKER: 还是说给同一种子不一定会有相同结果 05/26 15:52
12F:→ MOONRAKER: 如果这样那就要把rand()换成自己写的乱数产生器 05/26 15:53
13F:→ MOONRAKER: 例如xorshift 或更简单如IBM古早的 R *= pow(7,5)+k 05/26 15:55
14F:→ Caesar08: 直接使用C++11里面的<random>就没这问题了 05/26 16:07
15F:→ klly193746: 目前应该是使用在srand里面加参数 另外在多一个参数是 05/30 03:17
16F:→ klly193746: 略过前面几个数字 05/30 03:17