之所以沒有出現20位數...
是因為你在網路找上的範例有問題...
Rnd 本身所取得的數為 0 ~ 1之間的數值...
例如:
0.1098735
0.2729468
0.6736467
而當你把Rnd所取得的值, 乘上100000000 (1億)時,
則取得的亂數, 會是
10987353.3215734
27294681.6312982
67364675.1947425
利用Round 取整數後, 得到的值是
10987353
27294681
67364675
再利用HEX把上面的數值轉成 16進位之後,
就有可能因為數值太小, 而會發生少一位數的情況
例如:
15 對應16進位是 F (2位數 vs 1位數)
16 對應16進位是 10 (2位數 vs 2位數)
255 對應16進位是 FF (3位數 vs 2位數)
256 對應16進位是 100 (3位數 vs 3位數)
而實際取值所得到的結果...
10987353 對應16進位是 A7A759 (8位數 vs 6位數)
27294681 對應16進位是 1A07BD9 (8位數 vs 7位數)
67364675 對應16進位是 403E743 (8位數 vs 7位數)
以上例子 加起來剛好20位數,
但實際在跑亂數時,你將會遇到3個都是7位數,或3個都是6位數,
造成你跑完的結果,介於18個~21個英文數字(不可能一直都是20個英文數字的)
=============================
更慘的是,利用HEX來取英文數字, 只能取得A,B,C,D,E,F 5種英文字而已
真的是看了就不知道要怎麼改呀...............
上網找別的例子還比較快...
http://zhidao.baidu.com/question/92992772.html
這是別人寫的, 參考看看吧...