Generate random numbers without repeating a value: Difference between revisions
Content added Content deleted
(→{{header|Haskell}}: Consolidated two very similar versions) |
|||
Line 463: | Line 463: | ||
For example: |
For example: |
||
<pre>[16,1,3,9,8,20,12,18,11,19,2,14,5,6,13,15,17,10,7,4]</pre> |
<pre>[16,1,3,9,8,20,12,18,11,19,2,14,5,6,13,15,17,10,7,4]</pre> |
||
Or more lazily (and generalising a little more): |
|||
<lang haskell>import Data.List (sortOn) |
|||
import System.Random (newStdGen, randomRs) |
|||
--------------------- IN RANDOM ORDER -------------------- |
|||
inRandomOrder :: [a] -> IO [a] |
|||
inRandomOrder xs = |
|||
fmap fst . sortOn snd . zip xs |
|||
<$> (randomRs (0, 1) <$> newStdGen :: IO [Double]) |
|||
--------------------------- TEST ------------------------- |
|||
main :: IO () |
|||
main = |
|||
inRandomOrder [1 .. 20] |
|||
>>= print</lang> |
|||
{{Out}} |
|||
For example: |
|||
<pre>[8,2,10,18,1,12,6,4,17,7,9,5,16,15,11,3,14,20,19,13]</pre> |
|||
=={{header|Java}}== |
=={{header|Java}}== |