code_junkie

What is the best way to randomize an array's order in PHP without using the shuffle() function?

Nov 10th, 2011
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.94 KB | None | 0 0
  1. function randomize_array_1($array_to_randomize) {
  2. $new_array = array();
  3. while (count($array_to_randomize) > 0) {
  4. $rand_num = rand(0, count($array_to_randomize)-1);
  5. $extracted = array_splice($array_to_randomize, $rand_num, 1);
  6. $new_array[] = $extracted[0];
  7. }
  8. return $new_array;
  9. }
  10.  
  11. function randomize_array_2($array_to_randomize) {
  12. usort($array_to_randomize, "rand_sort");
  13. return $array_to_randomize;
  14. }
  15. function rand_sort($a, $b) {
  16. return rand(-1, 1);
  17. }
  18.  
  19. randomize_array_1:
  20. [2, 3, 1] => 166855
  21. [2, 1, 3] => 166692
  22. [1, 2, 3] => 166690
  23. [3, 1, 2] => 166396
  24. [3, 2, 1] => 166629
  25. [1, 3, 2] => 166738
  26.  
  27. randomize_array_2:
  28. [1, 3, 2] => 147781
  29. [3, 1, 2] => 73972
  30. [3, 2, 1] => 445004
  31. [1, 2, 3] => 259406
  32. [2, 3, 1] => 49222
  33. [2, 1, 3] => 24615
  34.  
  35. $keys = array_rand($myArray, count($myArray));
  36. $newArray = array();
  37.  
  38. foreach ($keys as $key) {
  39. $newArray[$key] = $myArray[$key];
  40. }
Add Comment
Please, Sign In to add comment