2011-05-30

普物測驗軟體 原始碼–1 亂數產生

這個類別主要用來某範圍內的亂數,寫法與一般隨機亂數稍稍不同。

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;
        }
    }

}

沒有留言: