ランダム文字列の生成
今週は某所で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
めっちゃそれっぽいですね!
おしまい。