非常に長い非繰り返しランダム シーケンスについての質問
10000000 ~ 90000000 の範囲で 100000 項目の長さの非繰り返しシーケンスを記述してください
$seedarray =microtime ();
$seedstr =split(" ",$seedarray,5);
$seed =$seedstr[0]*10000;
$numberarr= 配列();
for($i=0;$i<100000;){
$newnumber=rand(0,80000000)+10000000;
if(!in_array($newnumber,$ numberarr)){
array_push($numberarr,$newnumber);
$i++;
echo $i,'
';
}
}
?>
最後のプログラムは 32202 で APACHE クラッシュに達します。 。 。理由はわかりません。 。
C# 同様のアルゴリズムを作成します
private void button1_Click(object sender, EventArgs e)
{
Thread t = new Thread(tt);
t.IsBackground = true ;
t.Start();
}
private void tt() {
for (int i = 0; i {
文字列temp = r.Next(0, 80000000).ToString(); ;
if (!l.Contains(temp))
{
l.Add(temp);
i++;
}
}
MessageBox.Show("0k");
}
問題はありません
ですが、クロススレッドアクセス label を使用して変数 i を監視すると、C# の label でも例外が発生します。 。
何が間違っていたのか分かりません。それとも他に解決策はありますか?
-----解決策--------------------------------走ってみる、iロード 31408に到着、ははは。
------解決策---------phpのintの最大値は32769です。もしかしたらオーバーフローのせいかもしれません。
PHP コード
<br />------解決策---------<font color='#e78608'></font><?php<br /><br /> PHPコード<dl class='code'> ini_set("最大実行時間", 600); $seedarray =microtime(); $seedstr =split(" ",$seedarray,5); $seed =$seedstr[0]*10000; srand($seed); $numberarr= 配列(); for($i=0;$i <100000;){ $newnumber=rand(0,80000000)+10000000; if(!in_array($newnumber,$numberarr)){ array_push($numberarr,$newnumber); $i++; echo $i,' <br>'; if ($i%1000==0) フラッシュ(); } } ?><pre class="brush:php;toolbar:false"><div class="clear"></div>