ホームページ  >  記事  >  バックエンド開発  >  非常に長い非反復ランダム シーケンスに関する関連質問

非常に長い非反復ランダム シーケンスに関する関連質問

WBOY
WBOYオリジナル
2016-06-13 13:44:27807ブラウズ

非常に長い非繰り返しランダム シーケンスについての質問
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>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。