Trace repeats randomized array, only want it to trace one ouput

Hi, I have an application pulling in data via XML. Trying to randomize and display this data. When I test the .fla file, the trace does give me the number I want and randomizes, but it repeats continuously and I only want the output to be one randomized out of 25 numbers.

In my .fla file there is this code


import exam.Mixer;

var m:Mixer = new Mixer(25);

var qA:Array = m.getQuestionOrder();

and in the mixer file


package exam{

    //This is a very simple object that creates the random order in which exam questions are presented
    public class Mixer {

        //retains the array that is consulted for random question numbers
        private var randomizedOrder:Array = [];
       
        public function Mixer(questnsTotal:Number) {
            randomizedOrder = generateArray(questnsTotal);
        }
       
        public function getQuestionOrder():Array{
            return randomizedOrder;
        }

 

        public function generateArray(toNumber:int):Array {
            var result:Array=[];
            for (var i:int=toNumber; i != 0; i--) {
                result.push(i);
            }
            shuffle(result);
            traceF(result);
            return result;
        }

 

        function traceF(a:Array) {
            trace(a);
        }

 

        function shuffle(a:Array) {
            var p:int;
            var t:*;
            var ivar:int;
            for (ivar=a.length - 1; ivar >= 0; ivar--) {
                p=Math.floor((ivar + 1) * Math.random());
                t=a[ivar];
                a[ivar]=a[p];
                a[p]=t;
            }
        }

 

    }
}


and the file which pulls in the questions via XML


package exam {
    import flash.net.* //to create URLRequest and load XML file
    import flash.events.* //for Load events
    //import flash.display.* //for testing purposes - remove when testing complete
    
    //This class downloads the XML document, and then inserts info into arrays and variables.
    //Also provides text of questions and correct answers when requested.
    internal class XaMLDiplomat extends EventDispatcher {
        //VARIABLES:
        //for loaded XML doc
        private var myXML:XML;
        //for loading in XML
        private var examLoader:URLLoader;
        private var numQstns:Number; //count of total questions in a section
        private var sectStart:Number;
        //contains exam questions - ALL ARRAYS ARE ZERO RELATIVE -> actual question numbers = array index + 1
        private var questions:Array;
        //contain associated answer choices
        private var choiceA:Array;
        private var choiceB:Array;
        private var choiceC:Array;
        private var choiceD:Array;
        private var choiceE:Array;
        private var choiceF:Array;
        private var choiceG:Array;
        //array of the correct answers
        private var answers:Array;
        //use custom Mixer class to randomize order
        private var myMixer:Mixer;
        
        //CONSTRUCTOR
        public function XaMLDiplomat () { //NEED TO ADD ARGUMENTS (docLocation)
            //create URLRequest from argument
            var examSite:URLRequest = new URLRequest("protected/exam.xml");
            //create a loader for the XML
            examLoader = new URLLoader();
            //add listener for load completion
            examLoader.addEventListener(Event.COMPLETE, fullyLoaded);
            examLoader.load(examSite);
            //var ugly:Mixer = new Mixer(25);
        }
        
        //Load listener - creates XML object, and checks it for multiple sections. If multiple, it asks users 
        //which section they want - FIRST it needs to check database for any completed sections. 
        //If single, it goes ahead and starts array creation for first (& only) section
        private function fullyLoaded (e:Event):void {
            myXML = new XML(examLoader.data);
            //myXML.prettyPrinting = false;
            //still need to pull out SYSTEM data and pass it along...
            var system:XMLList = myXML..SYSTEM;
            var sysObj:Object = new Object();
            sysObj.examTitle = system.TITLE.toString();
            sysObj.totalMin = system.MINUTES.toString();
            sysObj.retakePW = system.RETAKEPW.toString();
            var numSections:Number = myXML..SECTION.length();
            if (numSections == 1) {
                generateArrays(1);
            }
            dispatchEvent(new MultiSectEvent(MultiSectEvent.SECTIONS, numSections, sysObj));
        }
        
        //Assigns arrays to instance variables for the selected section
        internal function generateArrays (sectn:Number):void {
            var whichSection:XMLList = myXML..SECTION.(@id == String(sectn));
            var probList:XMLList = whichSection.PROBLEM;
            numQstns = probList.length();
            sectStart = Number(probList[0].@id);
            
            
            
            questions = new Array();
            choiceA = new Array();
            choiceB = new Array();
            choiceC = new Array();
            choiceD = new Array();
            choiceE = new Array();
            choiceF = new Array();
            choiceG = new Array();
            answers = new Array();
            for (var i:Number=0; i<numQstns; i++) {
                var curProb:XMLList = probList.(@id == String(i+1));
                if (curProb.QUESTION.hasSimpleContent()) {
                    questions* = curProb.QUESTION.toString();
                }else {
                    //trace(curProb.QUESTION.toXMLString());
                    questions* = dropTags(curProb.QUESTION[0]);
                }
                choiceA* = curProb.CHOICE.(@letter == "a").toString();
                choiceB* = curProb.CHOICE.(@letter == "b").toString();
                choiceC* = curProb.CHOICE.(@letter == "c").toString();
                choiceD* = curProb.CHOICE.(@letter == "d").toString();
                choiceE* = curProb.CHOICE.(@letter == "e").toString();
                choiceF* = curProb.CHOICE.(@letter == "f").toString();
                choiceG* = curProb.CHOICE.(@letter == "g").toString();
                answers* = curProb.CHOICE.(hasOwnProperty("@correct") && @correct == "true").@letter.toString();
                trace (generateArrays);
                
            }
            
        
            /*
            var makeRandom:Boolean;
            system.RANDOM.toString() ==  'true' ? makeRandom = true : makeRandom = false;
            */
            myMixer = new Mixer(numQstns/*,makeRandom*/);
            
            trace("Question: "+questions[3]);
            trace("a: "+choiceA[3]);
            trace("b: "+choiceB[3]);
            trace("c: "+choiceC[3]);
            trace("d: "+choiceD[3]);
            trace("
 answer: "+answers[3]); 
            trace (generateArrays);
        }
        
        //method for external classes to acquire text of current exam question
        
        internal function getQuestion (qnum:Number):Object {
            var returnObj:Object = new Object();
            var randomQ:Number = myMixer.getQuestionOrder[qnum-1];
            returnObj.q = questions[randomQ];
            returnObj.ca = choiceA[randomQ];
            returnObj.cb = choiceB[randomQ];
            returnObj.cc = choiceC[randomQ];
            returnObj.cd = choiceD[randomQ];
            returnObj.ce = choiceE[randomQ];
            returnObj.cf = choiceF[randomQ];
            returnObj.num = qnum;
            //trace(randomQ);
            return returnObj;
            //trace (returnObj);
            
        }
        
        private function dropTags (txt:XML):String {
            
            var txtString:String = "";
            for each (var child:XML in txt.*) {
                if (child.nodeKind == "text") {
                    txtString += child.toString();
                }else {
                    txtString += " " + child.toXMLString();
                }
            }
            //trace(txtString);
            return txtString;
        }
        /*
        private function dropTags (txt:String):String {
            var sliceStart:Number = txt.indexOf(">");
            var sliceStop:Number = txt.lastIndexOf("<");
            return txt.slice((sliceStart+1), sliceStop);
        }*/
        
        internal function getAnswer (num:Number):String {
            return answers[num];
        }
        
        internal function getQCount ():Number {
            return numQstns;
            trace (getQCount);
            
        }
        
        internal function getSectStart():Number {
            return sectStart;
        }
        
        internal function getRealNum (num:Number):Number {
            return myMixer.getQuestionOrder[num-1];
        }
        
    }
}