Felipe Lessa wrote:
> Heinrich Apfelmus wrote:
>>
>> It's fair, but may duplicate elements, i.e. it doesn't necessarily
>> create a permutation. For example,  rs  could be something like
>>
>>   rs = [5,3,3,3,2,4]
>>
> 
> But our sort doesn't discard values when the keys are the same. For example,
> 
> [1,2,3,4] == map snd . sortBy (compare `on` fst) . zip (repeat 1) $ [1,2,3,4]
> 
> Nothing gets duplicated. Or did I miss something?

Oops, right, elements won't be duplicated by  sortBy . I was thinking of

   randomPerm xs = zipWith (!!) xs rs


But you do loose fairness. After all, you are mapping  n^n
possibilities for  rs  to  n!  permutations and because the latter does
not divide the former, there is no way to make that balanced for general
 n .

For instance, when the sorting algorithm is stable and you want to
permute say "abcde", then 'a' is more likely to be in front of 'b'
because of those cases where both 'a' and 'b' are zipped to the same number.


Regards,
apfelmus

--
http://apfelmus.nfshost.com

_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to