ffakerのsourceを眺めていたら以下のようなコードがありました。 # ffaker-2.1.0/lib/ffaker/utils/array_utils.rb module FFaker module ArrayUtils def self.shuffle(array) array.sort_by{Kernel.rand} end これ自体は、Array#shuffleがない頃のrubyでshuffleさせるためのものですが 意味は分かりやすいし読みやすいのですが、 ふと sort_by {rand} という書き方に一瞬、あれ?これどうなってるんだっけと 思ってしまいました。 シュワルツ変換 randの結果を突っ込んだ「tupleを生成してsortして、tupleにした元の結果を返す」 というアルゴリズムです。 これをSchwartzian Transform と言います。 シュワ