ruby random hash
ハッシュをランダムで取得したかったので以下のように書いてみたけど、これで良いのかな?
まだまだruby勉強中なのでこんな書き方で良いのか分からない。
class Hash def random_key array = [] self.keys.each {|k| array << k} return array[rand(array.size)] end end
ーー追加メモーー
r_kurainさんに教えていただいた方法
#メソッドチェーンで h = {:a=>1,:b=>2,:c=>3,:d=>4,:e=>5} h.to_a.shuffle[0][1] #=> ランダムに value が出る #インスタンスメソッドで class Hash def random_key key = self.keys.shuffle[0] return self[key] end end
少し調べてみて、ruby1.9ではsampleメソッドがあるのでこういう方法でもいけますね。
sampleメソッドはランダムに配列の要素を返す
sample(n)で引数を指定するとその分だけ要素を返す
h = {:a=>1,:b=>2,:c=>3,:d=>4,:e=>5} h.to_a.sample[1] #=> ランダムに value が出る