0

mt_rand(10,100) を使用して 10 から 100 の間の乱数を取得していますが、毎回 74 になります。

これが私が取り組んでいるものです

$success=mt_rand(10,100);

何か案は ?どういうわけかシードする必要がありますか? 前もって感謝します。

- -編集 - -

私はちょうどこれを試しました

    srand(microtime());
    $success=rand(10,100);

それでも毎回同じ答えが返ってきます、47.

- -編集 - -

これが全体です

srand(microtime());
$success=rand(10,100);
echo $success;
if ($success == 100) {
    $displayline="You succeeded";
    session_register("displayline");
    header("location:userhome.php");
}
4

4 に答える 4

1

どのバージョンの PHP を実行していますか? 4.2.0 では、mt_rand() が自動的にシードされるように変更されました。

シード値を提供して、mt_srand($seed) でシードできます。microtime() 関数の出力を使用します。

編集: 5.2 を使用しているため、コードをチェックして mt_srand() が呼び出されているかどうかを確認し、そのような呼び出しをすべてコメントアウトします。

于 2011-04-19T19:26:54.440 に答える
0

それは自分自身に種をまきます。

http://www.suspekt.org/2008/08/17/mt_srand-and-not-so-random-numbers/

PHPのバージョンを確認する必要があると思います

于 2011-04-19T19:29:00.140 に答える
0

それは変です。あなたがちょうどmt_rand()何をするなら、あなたは何を得ますか?の値はmt_getrandmax()何ですか?

でシードしてみてくださいmt_srand()

于 2011-04-19T19:27:24.827 に答える
0

すべてのシード関数を削除し、再度追加しないでください。その後、サーバーを再起動します。

また、一部のバージョンの php.ini ファイルを使用する Windows システムで発生する、この PHP バグを見つけました。

于 2011-04-19T20:11:09.133 に答える