作者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/m.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