[問題] 透過金鑰或自製亂數種子 產生0,1序列的方法

看板C_and_CPP作者 (蝌蚪)時間9年前 (2016/05/25 22:30), 9年前編輯推噓0(0016)
留言16則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 問題(Question): 想透過輸入金鑰的輸入 或是 自製的亂數種子 產生一組不規則01序列 且此01序列可以每次都產生一樣的 想用在加密上 求解已在網路上找過資料 不過 找亂數種子都只有看到 srand(time(NULL)); 沒有找到 自製亂數種子教學文 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.163.197.174 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1464186651.A.13A.html

05/25 22:36, , 1F
那叫虛擬亂數 不叫亂數種子 搜尋虛擬亂數產生器
05/25 22:36, 1F
好的google中

05/25 22:36, , 2F
VC? MSDN 找 CryptoGenRandom function
05/25 22:36, 2F

05/25 22:37, , 3F
Linux 的話用 /dev/urandom
05/25 22:37, 3F
感恩 研究中

05/25 22:53, , 4F
其實你給srand()相同的數字就可以保證接下來結果相同了
05/25 22:53, 4F

05/25 22:53, , 5F
還不一定要用到高檔的亂數產生器
05/25 22:53, 5F

05/25 22:53, , 6F
只要接著一直取亂數然後轉二進位就好
05/25 22:53, 6F
研究了好幾天原來是搜尋關鍵字打錯 另外 原來給srand()吃不同的值 會跑出不同的結果 程式已經寫出來了 太感謝你了 ※ 編輯: klly193746 (1.163.197.174), 05/25/2016 23:12:47

05/26 09:27, , 7F
如果你用rand與srand,那你換compiler之後會有問題
05/26 09:27, 7F

05/26 10:28, , 8F
咦這有隨compiler不同的嗎 o_O
05/26 10:28, 8F

05/26 11:19, , 9F
嗯標準沒有規定 rand 要用什麼演算法, 所以可能會不同
05/26 11:19, 9F

05/26 15:51, , 10F
起碼都還是亂的吧 我想得到頂多是整數寬度不同
05/26 15:51, 10F

05/26 15:52, , 11F
還是說給同一種子不一定會有相同結果
05/26 15:52, 11F

05/26 15:53, , 12F
如果這樣那就要把rand()換成自己寫的亂數產生器
05/26 15:53, 12F

05/26 15:55, , 13F
例如xorshift 或更簡單如IBM古早的 R *= pow(7,5)+k
05/26 15:55, 13F

05/26 16:07, , 14F
直接使用C++11裡面的<random>就沒這問題了
05/26 16:07, 14F

05/30 03:17, , 15F
目前應該是使用在srand裡面加參數 另外在多一個參數是
05/30 03:17, 15F

05/30 03:17, , 16F
略過前面幾個數字
05/30 03:17, 16F
文章代碼(AID): #1NHRSR4w (C_and_CPP)