Rubyでランダムソートをしようと思ったら、色々な発見が出来た。試行錯誤の記録。 結論 ランダムソートならsort_by(rand)がいい。 p (1..10).sort_by{rand} #=> [10, 3, 5, 9, 8, 6, 2, 4, 7, 1] シェルスクリプトとして活躍中〜。 % random() { ruby -e 'print STDIN.to_a.sort_by{rand}' } % printf "%d\n" {1..5} | random 2 1 3 4 5かなり便利っす。 では、最適解が出るまでの記録をどうぞ。 ランダムソート sortを使ってランダムに並び替えてみる。 p (1..10).sort{rand(3) - 1} [5, 2, 10, 1, 4, 9, 6, 3, 7, 8] rand(3) - 1だと、並び替える確率が低くなってしまうと思い、(r