GoLang shuffle

is this article helpful? yes | no
GoLang replacement for PHP's shuffle [edit | history]
func Shuffle(source interface{}) {
	valueOf := reflect.ValueOf(source)
	if valueOf.Type().Kind() != reflect.Slice {
		return
	}
	length := valueOf.Len()
	if length < 2 {
		return
	}
	rand.Seed(time.Now().UnixNano())
	swapper := reflect.Swapper(source)
	for i := 0; i < length; i++ {
		j := rand.Intn(length)
		swapper(i, j)
	}
}

PHP shuffle

PHP original manual for shuffle [ show | php.net ]

shuffle

(PHP 4, PHP 5, PHP 7)

shuffleShuffle an array

Description

bool shuffle ( array &$array )

This function shuffles (randomizes the order of the elements in) an array. It uses a pseudo random number generator that is not suitable for cryptographic purposes.

Note:

If two members compare as equal, their relative order in the sorted array is undefined.

Parameters

array

The array.

Return Values

Returns TRUE on success or FALSE on failure.

Changelog

Version Description
7.1.0 The internal randomization algorithm has been changed to use the » Mersenne Twister Random Number Generator instead of the libc rand function.

Examples

Example #1 shuffle() example

<?php
$numbers 
range(120);
shuffle($numbers);
foreach (
$numbers as $number) {
    echo 
"$number ";
}
?>

Notes

Note: This function assigns new keys to the elements in array. It will remove any existing keys that may have been assigned, rather than just reordering the keys.

See Also