Hi,
here an alternative way of producing a random array:
/**
* Randomizes a copy of this array.
*/
public function randomize (pArray:Array):Array {
var newArray:Array = pArray.slice();
var i:Number = newArray.length;
while (i) {
var p:Number = random(i);
var t:Object = newArray[--i];
newArray[i] = newArray[p];
newArray[p] = t;
}
return newArray;
}
regards
JC
On Thu, May 6, 2010 at 3:27 AM, Juan Pablo Califano <
[email protected]> wrote:
> A simple way:
>
> Put all the candidate numbers in a list (in this case, 1 to 40). Then pick
> randomly from that array, one at the time, and make sure you remove that
> number from the candidates list, so you can't have duplicates.
>
> In code (untested):
>
> function getRandomList():Array {
> var min:Number = 1;
> var max:Number = 40;
> var numItems:Number = 10;
> var candidates:Array = [];
> // fill up the candidates list with the "eligible" numbers
> for(var i:Number = min; i <= max; i++) {
> candidates.push(i);
> }
>
> var list:Array = [];
> var idx:Number = 0;
> var selectedNumber:Number = 0;
> for(i = 0; i < numItems; i++) {
> // get a number from the candidates list, randomly. Add it to the
> result and remove it from the candidates list (using splice)
> idx = Math.floor(Math.random() * candidates.length);
> selectedNumber = candidates.splice(idx,1)[0];
> list.push(selectedNumber);
> }
> return list;
> }
>
>
> Cheers
> Juan Pablo Califano
>
> 2010/5/5 Alan Neilsen <[email protected]>
>
> > I am working in ActionScript 2. I want to create a quiz in which 10
> > questions are randomly selected from a block of 40 questions. I found the
> > following code, but I can't work out how to stop it doubling up the
> > questions.
> >
> > function randRange(min:Number, max:Number):Number {
> > var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) +
> > min;
> > return randomNum;
> > }
> > for (var i = 0; i < 10; i++) {
> > var n:Number = randRange(1, 40)
> > trace(n);
> > }
> >
> > When I run this it outputs a list of numbers like 40 13 17 12 27 12
> 3
> > 17 9 15 which means some questions (in this case 17 and 12) will
> appear
> > twice in my quiz.
> > Bearing in mind that I am a bit of an ActionScript dummy, can anybody
> > suggest a way to modify the above script to prevent the same number being
> > generated more than once.
> >
> > This message is for the named person’s use only. It may contain
> > confidential, proprietary or legally privileged information. No
> > confidentiality or privilege is waived or; lost by any mistransmission.
> If
> > you receive this message in error, please immediately delete it and all
> > copies of it from your system, destroy any hard copies of it and notify
> > the sender. You must not directly or indirectly, use, disclose,
> > distribute, print or copy any part of this message if you are not the
> > intended recipient. GOULBURN OVENS INSTITUTE OF TAFE and
> > any of its subsidiaries each reserve the right to monitor all e-mail
> > communications through its networks. Any views expressed in this
> > message are those of the individual sender, except where the
> > message states otherwise and the sender is authorised to state them
> > to be the views of any such entity.
> >
> >
> >
> #####################################################################################
> > This e-mail message has been scanned for Viruses and Content and cleared
> > by MailMarshal
> >
> >
> #####################################################################################
> > _______________________________________________
> > Flashcoders mailing list
> > [email protected]
> > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> >
> _______________________________________________
> Flashcoders mailing list
> [email protected]
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
_______________________________________________
Flashcoders mailing list
[email protected]
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders