Hatena::Groupmkdir

作業ログとかをメモする場所。

2012-11-25

ランダムな文字列を生成するのに36進数を使う

| 01:26

ものすごく小ネタだけど。

ランダムな文字列を使いたいことがなぜかよくあって、for文で何度も乱数をつかって1個ずつ選ぶということをしてたのだけど、36進数を使うほうが楽だし短いことに気づいた。

以下はJavaScriptだけど、他の言語でも文字列を36進数の整数として整数にするのとその逆ができれば同じことができる。たとえばrubyだとto_i(36)とto_s(36)を使う。

Math.floor(Math.random()*parseInt('10000',36)).toString(36); //=> "b8dn"とか出てくる

これだと4文字であることが保証できないので、確実に4文字で出るようにするには以下のようにする。

Math.floor(Math.random()*parseInt('z000',36) + parseInt('1000',36)).toString(36);

文字列を長くしたり短くしたりするのは、0の数を増やしたり減らしたりすればいい。