タグ

2015年7月6日のブックマーク (1件)

  • Rubyでランダムな文字列を生成する方法 -- ぺけみさお

    Stack Overflowを眺めていたら目に止まったのでメモする。 ランダムな文字列を生成する例えば8文字のランダムな文字を得たいなら以下のように書ける。 範囲オブジェクトに対してmapメソッドを使うのがポイントだ。 処理を分解して見てみよう。 まず(0...8)で0から7の8要素の範囲オブジェクトを生成する。 範囲オブジェクトはEnumerableなのでmapが使える。 mapには要素とは無関係に1文字の大文字アルファベットを返すブロック{ (65 + rand(26)).chr }を渡す。 mapはリストを返すので、それをjoinで連結してランダムな文字列を得る。 ランダムな文字を得る方法を改善する上記の方法のうち、1文字の大文字アルファベットを返すブロック{ (65 + rand(26)).chr }は可読性が高いとは言えない。なにせ65.chrがAだとは一見してわからない。 そこ

    hysa
    hysa 2015/07/06
    o = [('a'..'z'), ('A'..'Z'), ('0'..'9')].map { |i| i.to_a }.flatten string = (0...8).map { o[rand(o.length)] }.join #=> "jZl7NvFb"