[問題] 透過金鑰或自製亂數種子 產生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