go-shuffle – github.com/shogo82148/go-shuffle Index | Examples | Files

package shuffle

import "github.com/shogo82148/go-shuffle"

Package shuffle provides primitives for shuffling slices and user-defined collections.

As of Go 1.10, the same functionality is now provided by package math/rand, and those implementations should be preferred in new code.

Index

Examples

Functions

func Float64s

func Float64s(a []float64)

Float64s shuffles a slice of float64s.

func Int64s

func Int64s(a []int64)

Int64s shuffles a slice of int64s.

func Ints

func Ints(a []int)

Ints shuffles a slice of ints.

Example

Code:

{
	x := []int{1, 2, 3, 4, 5}
	shuffle.Ints(x)
	for _, value := range x {
		fmt.Println(value)
		// Unordered output:
		// 1
		// 2
		// 3
		// 4
		// 5
	}
}

Output:

1
2
3
4
5

func Shuffle

func Shuffle(data Interface)

Shuffle shuffles Data.

As of Go 1.10, it just calls rand.Shuffle(data.Len(), data.Swap).

func Slice

func Slice(slice interface{})

Slice shuffles the slice.

func SortInt64s

func SortInt64s(a []int64)

SortInt64s sorts a slice of int64s in increasing order.

func Strings

func Strings(a []string)

Strings shuffles a slice of strings.

Types

type Int64Slice

type Int64Slice []int64

Int64Slice attaches the methods of Interface to []int64, sorting in increasing order.

func (Int64Slice) Len

func (p Int64Slice) Len() int

func (Int64Slice) Less

func (p Int64Slice) Less(i, j int) bool

func (Int64Slice) Swap

func (p Int64Slice) Swap(i, j int)

type Interface

type Interface interface {
	// Len is the number of elements in the collection.
	Len() int
	// Swap swaps the elements with indexes i and j.
	Swap(i, j int)
}

Interface is a type, typically a collection, that satisfies shuffle.Interface can be shuffled by the routines in this package.

type Shuffler

type Shuffler rand.Rand

A Shuffler provides Shuffle

func New

func New(src rand.Source) *Shuffler

New returns a new Shuffler that uses random values from src to shuffle

func (*Shuffler) Float64s

func (s *Shuffler) Float64s(a []float64)

Float64s shuffles a slice of float64s.

As of Go 1.10, it just calls (*rand.Rand).Shuffle(len(a), func(i, j int) { a[i], a[j] = a[j], a[i]}).

func (*Shuffler) Ints

func (s *Shuffler) Ints(a []int)

Ints shuffles a slice of ints.

As of Go 1.10, it just calls (*rand.Rand).Shuffle(len(a), func(i, j int) { a[i], a[j] = a[j], a[i]}).

func (*Shuffler) Shuffle

func (s *Shuffler) Shuffle(data Interface)

Shuffle shuffles Data.

As of Go 1.10, it just calls (*rand.Rand).Shuffle(data.Len(), data.Swap).

func (*Shuffler) Slice

func (s *Shuffler) Slice(slice interface{})

Slice shuffles the slice.

func (*Shuffler) Strings

func (s *Shuffler) Strings(a []string)

Strings shuffles a slice of strings.

As of Go 1.10, it just calls (*rand.Rand).Shuffle(len(a), func(i, j int) { a[i], a[j] = a[j], a[i]}).

Source Files

interface.go shuffle.go shuffle_slice.go

Version
v1.0.1
Published
May 4, 2022
Platform
js/wasm
Imports
3 packages
Last checked
now

Tools for package owners.