一:出現問題的代碼
//生成手機號碼個數
int phonedata=${__Random(1,500,)};
StringBuffer phonedatalist = new StringBuffer();
for (int i=0;i<phonedata;i++){
////生成手機號碼后8位
phonedata1=${__time(/1000000,)};
String phonedata12=String.valueOf(phonedata1);
//隨機選取手機前三位
int phonedata=${__Random(0,27,)};
String[] phonelist = {"198","166","199","170","170","171","176","175","145","149","173","172","170","170","131","130","188","187","183","182","159","157","152","151","150","147","139","138"};
String phonedata2=phonelist[phonedata];
//隨機選取手機第四位
int phonedata31=${__Random(0,9,)};
String phonedata311=String.valueOf(phonedata31);
//拼裝成手機號碼
String phone=phonedata2+phonedata311+phonedata12;
phonedatalist.append(phone).append(",");
}
二:修改之后的代碼
//生成手機號碼個數
int phonedata=${__Random(1,500,)};
StringBuffer phonedatalist = new StringBuffer();
Random rand = new Random();
for (int i=0;i<phonedata;i++){
//生成手機號碼后8位
phonedata1=rand.nextInt(9999999) + 1000000;
String phonedata12=String.valueOf(phonedata1);
//隨機選取手機前三位
int phonedata=rand.nextInt(27) + 0;
String[] phonelist = {"198","166","199","170","170","171","176","175","145","149","173","172","170","170","131","130","188","187","183","182","159","157","152","151","150","147","139","138"};
String phonedata2=phonelist[phonedata];
//隨機選取手機第四位
int phonedata31=rand.nextInt(9) + 0;
String phonedata311=String.valueOf(phonedata31);
//拼裝成手機號碼
String phone=phonedata2+phonedata311+phonedata12;
phonedatalist.append(phone).append(",");
}
三:問題原因
1、問題還是出在隨機函數定義位置上,函數定義不能放在for循環里面,而是應該在for循環外面定義好。
引用其他地方學到東西:首先就是要知道偽隨機數Random的算法原理,其原理簡單來說:一個種子 ---〉經過一定的算法 --〉產生一個結果(同時更改種子本身)那么.Next的時候 新的種子 ---〉經過一定的算法 --〉產生另一個結果(同時再產生一個種子)通過這樣得到隨機的效果,也就是說如果初始種子一樣,那么后面得到的結果和順序基本上就是一樣的,