這個類別主要用來某範圍內的亂數,寫法與一般隨機亂數稍稍不同。
class test{
public int ExpArray[];
public int QueArray[];
public int AnsArray[];
public void StartExp(int totalExps){ //宣告選擇開始題號之方法。「輸入總題數」
int i;
int randomExp;
int remainExp;
ExpArray=new int[totalExps];
/* 以 do 迴圈隨機選擇「起始題號」,條件為數字不大於總題數也不能為 0 */
do{
randomExp=(int)((Math.random()*100)/10);
}while(randomExp>totalExps-1);
/* 從起始題號起,排列實驗項目 */
for(i=0;i<totalExps;i++){
if((randomExp+i)>totalExps-1){ //如果排列數字大於最後題號則回到0的數字重排
remainExp=totalExps-randomExp;
ExpArray[i]=i-remainExp;
}
else{
ExpArray[i]=randomExp+i;
}
}
}
public void RandomQues(int totalQues, int choseQues){ //宣告選題方法。輸入「總題數」、「出現題數」
int i, j;
int randomQue;
QueArray=new int[choseQues]; //陣列宣告不可在 for 內,否則陣列值始終為 0
/* 在總題數內隨機產生題號*/
for(i=0; i<choseQues; i++){
do{ // 若題號數大於總題數或取到 0 則重新選取變數
randomQue=(int)((Math.random()*100)/10);
for (j=0;j<i;j++){
if(QueArray[j]==randomQue){ //如果題號已出現過,則讓隨機數大於總題數,會重選
randomQue=totalQues;
}
}
}while(randomQue>totalQues-1);
QueArray[i]=randomQue;
}
}
/* 選擇項目隨機排列。基本上與題目隨機排列方法相同*/
public void RandomAns(int totalAns, int choseAns){ //宣告選題方法。輸入「總題數」、「出現題數」
int i, j;
int randomAns;
AnsArray=new int[choseAns]; //陣列宣告不可在 for 內,否則陣列值始終為 0
for(i=0; i<choseAns; i++){
do{ // 若題號數大於總題數或取到 0 則重新選取變數
randomAns=(int)((Math.random()*100)/10); //隨機產生題號
for (j=0;j<i;j++){
if(AnsArray[j]==randomAns){ //如果題號已出現過,則讓隨機數大於總題數,會自動重選
randomAns=totalAns;
}
}
}while((randomAns>totalAns));
AnsArray[i]=randomAns-1;
}
}
}
沒有留言:
張貼留言