by shigemk2

当面は技術的なことしか書かない

ランダムな文字列を生成する

12文字の文字列をランダムで生成したいとき、どうしたらいいんだろうと
ふと思ったので、
PHP でランダム文字列を生成|てくめも@ecoop.net
こちらから拝借し、コードを作成しました。

<?php
function getRandomString($s_length = 12){
  $char_list = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  $result = "";
  for($i = 0; $i < $s_length; $i++)
    $result .= $char_list[mt_rand(0, strlen($char_list) - 1)];
  return $result;
}
// 使う
echo getRandomString() . "\n";
?>

やっていることは、

  1. 関数の引数で何文字の文字列を生成するかを指定する
  2. char_list変数で、取り出すべき文字列のリストを作る
  3. s_lengthの値だけループをかける
  4. mt_rand関数で何番目の文字列を取り出すかを乱数で指定し、指定された文字列をresult変数に追加する
  5. s_lengthで指定した文字数の文字列が返ってくる

という感じである。
ちなみに、char_list[n]で、n番目の文字列を返すことが出来、
また'.='で、文字列をpushぽく追加することが出来る。

あと、PHP 4.2.0 以降、シード値の設定が自動的に行われるようになったため、
srand() または mt_srand() によりランダム数生成器に
シードを与える必要がなくなったそうです。

つまり、mt_srand関数は必要ないのか?