読者です 読者をやめる 読者になる 読者になる

ランダム文字列の生成

今週は某所でWeb勉強会に参加していて、jQuery+Ajax+PHPみたいなのを勉強中。
本筋とはまったく関係ないけど、つい閃いてしまったのでメモメモ。

JavaScriptでのランダム文字列の生成方法

です。
正統派の方法は知らないけど、こんな方法もあるよ、程度に思っていただければ。

まずは乱数を得ないとどうしようもありません。
Math.random()で得られますね。
で、例によって得られる乱数は[0,1]の範囲なので、[0,100]の乱数が欲しいなら

Math.round( Math.random() * 100 );

とかするわけです。
ところで、これはあくまで乱数値です。今欲しいのは文字列なんです。
そこでtoString()発動。

「はあ?文字列に変換するだけじゃ何の意味もねーじゃん!」

それが違うんですな。

構文
number.toString( [radix] )

引数
radix
数値を表すために使われる基数を指定する、2 から 36 までの整数。

つまーり!toStringメソッドでは基数変換をして文字列を返すことができるのです。
まさに謎仕様。だから…

Math.round( Math.random() * 1e15 ).toString(36);

とかやってやれば、さもランダム文字列が生成されているかのように見えるのです。
実体は勿論乱数値を生成して36進数で返しているだけ!!!(1e15は適当。それなりにでかい数ならOK)
36進数ですから、0〜9とa〜zがちょうどすべて含まれている訳です。めっちゃランダム文字列に見える訳です。

実行例

6r0b2jz4as
1wrnr2jvfq
14qku8jfh2
91xqn919pz
67lenndidp
76bnes2z43
2xulvxpmza
6k3vy1gbq5
99uezhje4y
8v742cl48k

めっちゃそれっぽいですね!

おしまい。