- 論壇徽章:
- 0
|
記得前久說到過隨機(jī)數(shù)生成的想關(guān)程序,可是,在我提出隨機(jī)序列如何生成時(shí),貌似沒人關(guān)注了
今天看java的時(shí)候,受到里面方法指導(dǎo),想到了perl生成隨機(jī)序列的方法,不采用hash
并且可以重復(fù)使用該方法,寫了2個(gè),在有個(gè)細(xì)微的地方有差別,先看下:
- # method A
- for($k=0;$k<10;$k++){$arr[$k]=$k;}
- print "@arr\n";
- for($k=0;$k<10;$k++){
- $i=int(rand(10));
- @arr[$i,$k]=@arr[$k,$i];
- }
- print "@arr\n";
復(fù)制代碼
- # method B
- for($k=0;$k<10;$k++){$arr[$k]=$k;}
- print "@arr";
- for($k=0;$k<10;$k++){
- $i=int(rand(10));
- @arr[$i,1]=@arr[1,$i]; #注意,這里和上面的差別就是$k換成了固定值,比如1
- }
- print "@arr\n";
復(fù)制代碼
上述2種方法獲得隨機(jī)序列都很好
問題是,我對哪種方法能得到更好的隨機(jī)序列存在疑問
不知道誰能來解析下2中方法的效果
補(bǔ)充:2種方法的文字說明:
對于一個(gè)數(shù)列,假設(shè)是順序的,如 1 2 3 4 5 6
B:每次隨機(jī)取其中一個(gè)位置,將他的數(shù)值和1號位數(shù)值交換,換6次,得到一個(gè)隨機(jī)數(shù)列
A:每次隨機(jī)取一個(gè)位置,將他的數(shù)值和順序位數(shù)值交換,換6次,得到一個(gè)隨機(jī)數(shù)列
[ 本帖最后由 perljoker 于 2008-2-20 17:11 編輯 ] |
|