note 126469 added to function.array-rand
| From: | fulachan2 at gmail dot com | Date: | Thu, 30 Sep 2021 19:45:16 +0000 |
| Subject: | note 126469 added to function.array-rand | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-217020@lists.php.net to get a copy of this message | ||
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("<span style='transform: rotateZ(%ddeg); display: inline-block;font-size:
%spx; color:%s'>%s</span>",
$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.
----
Server IP: 45.112.84.4
Probable Submitter: 45.112.85.242 (proxied: 37.173.242.1)
----
Manual Page -- https://php.net/manual/en/function.array-rand.php
Edit -- https://main.php.net/note/edit/126469
Del: integrated -- https://main.php.net/note/delete/126469/integrated
Del: useless -- https://main.php.net/note/delete/126469/useless
Del: bad code -- https://main.php.net/note/delete/126469/bad+code
Del: spam -- https://main.php.net/note/delete/126469/spam
Del: non-english -- https://main.php.net/note/delete/126469/non-english
Del: in docs -- https://main.php.net/note/delete/126469/in+docs
Del: other reasons-- https://main.php.net/note/delete/126469
Reject -- https://main.php.net/note/reject/126469
Search -- https://main.php.net/manage/user-notes.php