How do i randomly select an array in php?

[PHP 4, PHP 5, PHP 7, PHP 8]

array_randPick one or more random keys out of an array

Description

array_rand[array $array, int $num = 1]: int|string|array

Parameters

array

The input array.

num

Specifies how many entries should be picked.

Return Values

When picking only one entry, array_rand[] returns the key for a random entry. Otherwise, an array of keys for the random entries is returned. This is done so that random keys can be picked from the array as well as random values. If multiple keys are returned, they will be returned in the order they were present in the original array. Trying to pick more elements than there are in the array will result in an E_WARNING level error, and NULL will be returned.

Changelog

VersionDescription
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 array_rand[] example

Anonymous

13 years ago

If the array elements are unique, and are all integers or strings, here is a simple way to pick $n random *values* [not keys] from an array $array:

Anonymous

10 years ago

It doesn't explicitly say it in the documentation, but PHP won't pick the same key twice in one call.

fulachan2 at gmail dot com

1 year ago

array_rand [] takes a random value without ever being able to go back in its choice of random value.
A simple example:
I decide to mix an array of 10 entries to retrieve 3 values. This choice will give increasing and random values.

    $myarray = range[1,10];

        $pm = array_rand[$myarray,3];     
    // $pm return array[0->0,1->6,2->8]

But if I decide to shuffle an array of 10 entries to get 10 entries, array_rand [] will choose to assign a value to each return value and therefore the return array will not be random.

    $gm = array_rand[$myarray,count[$myarray]];
    // $gm not random array[0->0,1->1,2->2,3->3,4->4,5->5,6->6,7->7,8->8,9->9]

The easiest way to have a truly random value:
either use array_rand [] in a loop of 1 value at a time

$deg = range[-60,60];
$size = range[16,64];
$color = ["blue","red","green","pink","orange","purple","grey","darkgreen","darkkhaki"];
$i = 0;
$longueur = 10;
do{
    ++$i;
    printf["%s",
        $deg[array_rand[$deg]],
        $size[array_rand[$size]],
        $color[array_rand[$color]],
        $alnum[array_rand[$alnum]]];

}while[$i < $longueur];

------------------
or simply use shuffle [] to shuffle the array really randomly.

grzeniufication

4 years ago

Chủ Đề