úÎÖä   portable experimental =Shuffle a list randomly. The method is based on Oleg Kiselyov's  perfect shuffle  0http://okmij.org/ftp/Haskell/perfect-shuffle.txt, K but much simpler because it uses existing data structures. The efficiency ' of both methods should be comparable. Complexity: O(n * log n) 3Shuffle a sequence randomly. This is being used by , ' so it logically uses the same method. Complexity: O(n * log n) "Take a random sample from a list. Complexity: O(n + m * log n) &Take a random sample from a sequence. Complexity: O(m * log n) 4Randomly choose and extract an element from a list. Complexity: O(n) 8Randomly choose and extract an element from a sequence. Complexity: O(log n) %Select a random element from a list. Complexity: O(n). )Select a random element from a sequence. Complexity: O(log n). 'Select a random element from an array. Complexity: O(1). )A stream of random elements from a list. +Complexity: O(n) base and O(1) per element +A stream of random elements from an array. Complexity: O(1) per element         random-extras-0.3Control.Monad.Random.Extrasshuffle shuffleSeqsample sampleSeq choiceExtractchoiceExtractSeqchoice choiceSeq choiceArraychoices choicesArray.:extract extractSeq getRandomR'getRandomRNumsbacksaw shuffleSeq'