perfect-vector-shuffle: Library for performing vector shuffles

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

This package contains functions for performing in-place Fisher--Yates shuffles on mutable and immutable vectors along with some related functionality. The shuffles are uniform at random amongst all permuations.

For an example of how to use it:

module Main where

import Data.Vector
import Immutable.Shuffle

main :: IO ()
main = do {
shuffleMyVector >>= print;
cycleMyVector   >>= print;
derangeMyVector >>= print;
}

myVector :: Vector Int
myVector = fromList [1..10]

shuffleMyVector :: IO (Vector Int)
shuffleMyVector = shuffleM myVector

cycleMyVector :: IO (Vector Int)
cycleMyVector = maximalCycleM myVector

derangeMyVector :: IO (Vector Int)
derangeMyVector = derangementM myVector

This gives the following:

>>> main
[2,8,1,5,10,9,7,3,6,4]
[6,8,4,10,9,2,5,7,3,1]
[8,5,4,1,10,9,3,6,2,7]

>>> main
[7,9,3,5,10,6,8,1,2,4]
[2,4,10,7,8,1,5,9,3,6]
[4,8,5,2,7,3,9,6,10,1]

Properties

Versions 0.1.0, 0.1.1, 0.1.1.1, 0.1.1.2, 0.1.1.2
Change log CHANGELOG.md
Dependencies base (>=4.9 && <4.20), MonadRandom (>=0.5.1.1 && <0.7), perfect-vector-shuffle, primitive (>=0.6.4 && <0.9), random (>=1.1 && <1.3), vector (>=0.12.0 && <0.14) [details]
License BSD-3-Clause
Copyright 2019
Author Callan McGill
Maintainer callan.mcgill@gmail.com
Category Random, Vector
Home page https://github.com/Boarders/perfect-vector-shuffle
Bug tracker https://github.com/Boarders/perfect-vector-shuffle/issues
Source repo head: git clone https://github.com/Boarders/perfect-vector-shuffle
Uploaded by callanmcgill at 2024-06-10T16:16:23Z

Modules

[Index] [Quick Jump]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees