1--TEST-- 2Testing randomization of shuffle() and str_shuffle(). 3--FILE-- 4<?php 5function stats($f, $a) { 6 $times = 90000; 7 print "$f\n"; 8 ksort($a); 9 foreach($a as $k => $v) 10 print "$k: $v: " . sprintf('%0.3f', $v / $times) . "\n"; 11} 12$a = array(); 13$times = 90000; 14for ($i = 0; $i < $times; $i++) { 15 $p = range(1,4); 16 shuffle($p); 17 $s = join('', $p); 18 if (empty($a[$s])) $a[$s] = 0; 19 $a[$s]++; 20} 21 22stats('shuffle', $a); 23$a = array(); 24$times = 90000; 25for ($i = 0; $i < $times; $i++) { 26 $p = '1234'; 27 $s = str_shuffle($p); 28 if (empty($a[$s])) $a[$s] = 0; 29 $a[$s]++; 30} 31 32stats('str_shuffle', $a); 33?> 34--EXPECTREGEX-- 35shuffle 361234: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 371243: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 381324: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 391342: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 401423: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 411432: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 422134: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 432143: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 442314: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 452341: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 462413: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 472431: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 483124: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 493142: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 503214: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 513241: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 523412: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 533421: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 544123: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 554132: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 564213: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 574231: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 584312: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 594321: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 60str_shuffle 611234: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 621243: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 631324: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 641342: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 651423: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 661432: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 672134: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 682143: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 692314: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 702341: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 712413: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 722431: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 733124: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 743142: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 753214: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 763241: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 773412: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 783421: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 794123: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 804132: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 814213: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 824231: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 834312: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 844321: 3[0-9][0-9][0-9]: 0.0[3-4][0-9] 85