人々が自分のサイトにアクセスするために使用する疑似ランダム コードを生成する必要があります。これを可能にするコードをいくつか書きましたが、(mt_rand を反復可能にするために) シードとして整数ではなく文字配列を使用していることに気付きませんでした。私のデモコードはここにあります:
$seedVal = array(6565866669, 6565866670, 6565866671);
foreach ($seedVal as $seed) {
mt_srand($seed);
$rnd = '';
for ($i = 0; $i < 11; $i++) { // Loop over the string length
$tmp = mt_rand(0, 10);
$rnd .= $tmp;
}
echo "Seed = $seed, RandNum = $rnd </br>";
}
echo "</br>Now with character seeds</br>";
$seedVal = array('6565866669', '6565866670', '6565866671');
foreach ($seedVal as $seed) {
mt_srand($seed);
$rnd = '';
for ($i = 0; $i < 11; $i++) { // Loop over the string length
$tmp = mt_rand(0, 10);
$rnd .= $tmp;
}
echo "Seed = $seed, RandNum = $rnd </br>";
}
return;
1and1 の結果は次のとおりです。
Seed = 6565866669, RandNum = 425453109319
Seed = 6565866670, RandNum = 39388593858
Seed = 6565866671, RandNum = 891273965110
Now with character seeds
Seed = 6565866669, RandNum = 97138956767
Seed = 6565866670, RandNum = 97138956767
Seed = 6565866671, RandNum = 97138956767
しかし、それ以外の場所 (ローカルホスト、他のサーバーなど) の結果は次のとおりです。
Seed = 6565866669, RandNum = 425453109319
Seed = 6565866670, RandNum = 39388593858
Seed = 6565866671, RandNum = 891273965110
Now with character seeds
Seed = 6565866669, RandNum = 425453109319
Seed = 6565866670, RandNum = 39388593858
Seed = 6565866671, RandNum = 891273965110
問題は、現在のサーバー (1and1) でシステムが正常に動作することです (予測できない文字入力を使用)。しかし、私は新しいサーバーに移行しています。もちろん、コードは常に最初のセットのように見えます。つまり、乱数の 2 番目のセット (文字配列がシードされている) を生成する方法がわかりません。
誰でもこれを行う方法を教えてもらえますか?
私が欲しい:
mt_srand('6565866669');
echo mt_rand(0, 10);
戻る
97138956767
悪戦苦闘。ありがとうございました!!