【PHP】偏りのないランダム文字を取得する

公開日: : 文字列

パスワードなどに使えるランダムな文字列を取得します。

function getRandomString($nLengthRequired = 8) {
    $cList = "abcdefghijkmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_";
    $sRes = "";
    for($i = 0; $i < $nLengthRequired; $i++) {
        $sRes .= $cList[mt_rand(0, strlen($cList) - 1)];
    }
    return $sRes;
}

$cListの文字リストが、生成される文字列の中に入る文字になります。

ちなみにで、どういうランダム文字生成関数は、
どの程度の頻度で重複するのかと思いました。試してみました。

こんなコードで、

while(true) {
    $i++;
    $str = getRandomString(8);
    if(array_search($str, $pass) !== false || $i > 100000) {
        break;
    } else {
        $pass[] = $str;
        echo $i . "
";
    }
}

結果、
文字列の長さが、
3→ 大体300くらいで重複する
4→ 大体10000くらいで重複する

という感じでしたので、3、4、で利用する場合そこまで一意にならない可能性もありますので要注意です。

関連記事

php

【PHP】CRLF・CRの改行をLFに置換する

改行をLFに置換します function replaceCRLF($str) { ret

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

php
【PHP】リファラーを取得する

ユーザーがどのサイトから来たのか取得したい時ありますよね。 そんな時

php
【PHP】ファイルが存在するか確認する

画像ファイルなど、ファイルの存在確認をするには、file_exists

php
【PHP】arrayの要素を消す

配列で特定のキーの要素を削除したい時は、unset関数を使います

php
【PHP】httpのステータスコードで404を返す方法

ページを表示しつつ、httpステータスは404を返したい時などあると思

php
【PHP】var_dumpで改行させてブラウザで表示したい時

プログラム中でvar_dumpする時、dumpしたものの中身が多いと大

→もっと見る

PAGE TOP ↑