module Data.Tensort.Utils.RandomizeList (randomizeList) where

import Data.Tensort.Utils.Types (Sortable (..))
import System.Random (mkStdGen)
import System.Random.Shuffle (shuffle')

randomizeList :: Sortable -> Int -> Sortable
randomizeList :: Sortable -> Int -> Sortable
randomizeList (SortBit [Int]
xs) Int
seed = [Int] -> Sortable
SortBit ([Int] -> Int -> StdGen -> [Int]
forall gen a. RandomGen gen => [a] -> Int -> gen -> [a]
shuffle' [Int]
xs ([Int] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [Int]
xs) (Int -> StdGen
mkStdGen Int
seed))
randomizeList (SortRec [Record]
xs) Int
seed = [Record] -> Sortable
SortRec ([Record] -> Int -> StdGen -> [Record]
forall gen a. RandomGen gen => [a] -> Int -> gen -> [a]
shuffle' [Record]
xs ([Record] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
length [Record]
xs) (Int -> StdGen
mkStdGen Int
seed))