在26位英文本母中隨即選取10個字元組成字串,產生一定數量的唯一字串,對比幾種方式:
1.使用 system.security.cryptography.rngcryptoserviceprovider 生成 random 的種子 和 使用普通聲稱隨機數進行對比.
2.使用 idictionary其中tkey是 int 型 存放字串的hashcode,tvalue 是 string 型,存放生成的字串,通過對比鍵判斷是否項是否已經存在 和 使用 ilist儲存字串進行對比.
3.使用隨機擷取字串 和 隨機字串陣列索引獲取組成字串.
生成構建 random 例項種子的方法:
static
intgetrandomseed( )
生成隨機字串的方法:
static
string
getrandomstring( )
return
sbpwd.tostring( );}
對比結果:
1.使用 getrandomseed( )方法生成 random 種子 並使用字元擷取 使用idictionary耗時 20688ms 產生重複項 359 生成項:1000000
2.不使用 getrandomseed( )方法生成 random 種子 並使用字元擷取 使用idictionary耗時 1562547ms 產生重複項 127749442 生成項:100000
3.使用 getrandomseed( )方法生成 random 種子 並使用字串陣列 使用idictionary耗時36125ms 產生重複項 381 生成項:1000000(使用char陣列效率更低,隨機取得char轉換成string時要進行裝箱)
4.使用getrandomseed( )方法生成 random 種子 並使用字元擷取 使用ilist耗時 214719ms 產生重複項2 生成項:100000(生成項越多耗時越長)
可見使用 system.security.cryptography.rngcryptoserviceprovider 生成 random 種子 產生的效率要高很多,特別是要連續生成大量的隨機數,因為 random 生成值的重複率非常低.
使用字串的hashcode對比字串比直接對比字串效率要高很多.
使用字串擷取比使用字串陣列效率要高點.
生成大量隨機字串不同實現方式的效率對比
生成大量隨機字串不同實現方式的效率對比 在26位英文本母中隨即選取10個字元組成字串,產生一定數量的唯一字串,對比幾種方式 1.使用 system.security.cryptography.rngcryptoserviceprovider 生成 random 的種子 和 使用普通聲稱隨機數進行對比...
生成隨機字串
原文出處 估摸著以後極有可能使用到,於是寫了乙個生成隨機字串的函式。可以自定義生成規則,生成字串長度。模仿了ms的函式風格,生成規則使用巨集的或且規則,返回值使用了布林型。這裡使用布林返回可能作用不大。直接貼 吧,同樣是兩個檔案。randomstring.h pragma once define r...
生成隨機字串
產生隨機字串,可用來自動生成密碼 預設長度6位 字母和數字混合 param string len 長度 param string type 字串型別 0 字母 1 數字 其它 混合 param string addchars 額外字元 return string function rand stri...