Re: Random Order of a Set of Numbers
- To: mathgroup@smc.vnet.net
- Subject: [mg10907] Re: [mg10817] Random Order of a Set of Numbers
- From: Wouter Meeussen <w.meeussen.vdmcc@vandemoortele.be>
- Date: Thu, 12 Feb 1998 20:15:51 -0500
At 21:01 10.02.98 -0500, JD Faith wrote:
>HELP PLEASE...
>
>I'm a math moron looking for a formula to compute the following problem:
>I need to generate a random list of the numbers 1-36, 33 times. The
>idea being to replicate the drawing 0f the numbers 1-36 from a hat 33
>times.
>
>Any assistance is appreciated. Give your buddies a laugh by posting
>responses to the Newsgroup or save me some pride by e-mailing me
>directly.
>
>Thank you...
>
several mails recently touched on the topic of selecting random elements
or reordering lists in a certain way.
For all cases where numbers are drawn from a hat **without putting the
selected numbers back in the hat, giving them a chance to come up
again**, this operation amounts to a permutation of these objects. Now,
permutations are best handled as ... permutations (on the integers).
The add-on DiscreteMath`Permutations` lets you get at random
permutations, with the somewhat surprising name RandomPermutation[ size
] (;-))
say that you have a list of 5 objects obj={first, sec, third,
fourth,fifth} and you want to permute them, simply do
jostle=RandomPermutation[ 5 ]; obj[[ jostle ]]
if you define "jostle" with ":=" instead of " =" then you obtain a fresh
randomjostle each time it is called\executed.
Personally, I would have liked to see the function "Ordering[ list ]" as
part of the
DiscreteMath`Permutations` packages, instead of the heavy
..`Combinatorica` package where it now resides.
It can however be made "by hand" with a one-liner :
Ordering[ obj_List]:=Last /@ Sort[Transpose[{ obj , Range[Length[obj]]
}] ]
this nice function gives the permutation that puts obj into order :
obj [[ Ordering @ obj ]] is equivalent to Sort [ obj ]
The advantage is that such permutations can be written in cycle form,
which makes them easier to "understand" :
ToCycles[ ] and FromCycles[ ] will do just that.
<<DiscreteMath`Permutations`
Table[ RandomPermutation[36] , {33} ] will give J.D. Faith the table he
wants.
wouter.
NV Vandemoortele Coordination Center Oils & Fats Applied Research
Prins Albertlaan 79
Postbus 40
B-8870 Izegem (Belgium)
Tel: +/32/51/33 21 11
Fax: +/32/51/33 21 75
vdmcc@vandemoortele.be