[問題] 亂數產生的方式..
等等..
看到標題先別覺得奇怪,
這篇文章分成兩個部分,
一個是亂數,另一個是判斷亂數是否重複.
我google幾個長亂數的產生方法,
c#只能產生32長度的亂數,
若要產生在更上去的亂數,就必須用接的方式,
(ex:長度96的亂數,可以用3*32去接)
我今天寫了一個程式,希望產生長度為20的HEX亂數(0~9,A~F)
直接產生長度20的亂數比較適合呢?
還是每個digit都產生一個亂數,然後接20次,產生出一個20digit 的亂數比較好?
又第二個問題,
若要判斷產生的亂數是否重複.
筆數少的時候還沒問題.
但是筆數多的時候不太可能宣告陣列放置亂數.
所以我利用存取文字檔的方式,
產生完亂數檔案在去判斷是否有重複.
但是判斷的過程實在很慢(一次產生100萬筆資料)
我第一次用的方法,
複製檔案,然後第一個檔案每次取一行,
然後比對複製檔案內的每一行,
所以100萬筆資料,比對需耗時100萬*100萬(while迴圈)
比了30分鐘,大概只比完2000筆
後來改用比對字元的方式,
只要第一個字元不同就break while迴圈
粗略估計約30分鐘可以比完5000筆,
還有沒有更好的方法可以判斷是否有重複資料的產生呢?
或是,有沒有甚麼random的方法,
可以完全避免產生亂數資料的重複呢?
PS:就算時間、電腦一樣,產生的亂數內容都不一樣最好...
不知道有沒有這種方法..
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.169.227.244
→
02/27 21:44, , 1F
02/27 21:44, 1F
推
02/27 21:55, , 2F
02/27 21:55, 2F
→
02/27 21:55, , 3F
02/27 21:55, 3F
→
02/27 22:07, , 4F
02/27 22:07, 4F
→
02/27 22:08, , 5F
02/27 22:08, 5F
→
02/27 22:09, , 6F
02/27 22:09, 6F
推
02/27 22:29, , 7F
02/27 22:29, 7F
→
02/27 23:01, , 8F
02/27 23:01, 8F
→
02/27 23:01, , 9F
02/27 23:01, 9F
推
02/27 23:16, , 10F
02/27 23:16, 10F
→
02/27 23:17, , 11F
02/27 23:17, 11F
→
02/27 23:20, , 12F
02/27 23:20, 12F
→
02/27 23:20, , 13F
02/27 23:20, 13F
推
02/27 23:38, , 14F
02/27 23:38, 14F
→
02/27 23:43, , 15F
02/27 23:43, 15F
→
02/27 23:43, , 16F
02/27 23:43, 16F
→
02/27 23:44, , 17F
02/27 23:44, 17F
推
02/28 04:49, , 18F
02/28 04:49, 18F
推
02/28 06:24, , 19F
02/28 06:24, 19F
→
02/28 06:26, , 20F
02/28 06:26, 20F
討論串 (同標題文章)