関数srand(time(0))はC ++で何をしますか?


ベストアンサー

コンピューターが

疑似乱数 数値は、プログラマーによって設計された式に基づいているため、真にランダムではありません。そして、その公式に基づいて、コンピューターは予想どおりに一連の乱数を生成します。これについての考え方の1つは、コンピューターがすべてのページに数字が入っている本から読み始めるというものです。この本を読むことで、コンピューターが乱数のシーケンスを生成しているように見えることがあります。

しかし、問題があります。コンピューターは最初から本から読み始めます。このコンピュータのため、プログラムでは常に同じ「乱数」のセットが生成されます。このプログラムをどこかで使用している場合、サイコロを振るゲームは常に同じ結果を生成し、それを望まないとします。

この問題の解決策は、コンピューターが任意の場所から読み取りを開始する場合です。最初からではなく、本の中で。これは「 シード 」と呼ばれます。時間引数を関数 srand に渡すことにより、基本的に乱数が生成されます。現在の日付と時刻に基づいているため、プログラムを開始するたびにランダムに異なります。これは信頼できませんが、ほとんどの場合は機能します。

このコードを使用すると、次のようになります。上部にファイルを含めました< cstdlib 問題がない場合は、このファイルには、乱数を生成する関数の定義が含まれています。

回答

C ++では、「return」と書くとどうなりますか。メイン関数の1 “?

return 1;ステートメントが実際に実行されると、プログラムが終了し、ステータス1が返されます。呼び出し環境に。 (呼び出し元の関数に値1を返す可能性がありますが、C ++ではmainの呼び出しは許可されていません。)

これが意味することは環境によって異なります。この言語は、戻り値1に意味を割り当てません。戻り値0が必要です。成功を示すステータスを返します。 exit()関数を宣言するヘッダーは、マクロEXIT\_SUCCESS

。これらの値がmainから返される場合、明らかなセマンティクスがあります。 (mainから値を返すことは、基本的に同じ値でexit()を呼び出すことと同じです。)

多くのシステムで、Linux、他のUNIXライクなシステム、およびWindowsを含め、0を返すと成功を示し、1を返すと失敗を示しますが、他のシステムには異なる規則があります。 (特に、OpenVMSは失敗を示すために偶数値を使用し、成功を示すために奇数値を使用するため、return 1;は成功を示します。Cランタイムにはは奇数、つまり成功のステータスを返します。)

Linux / UNIX / POSIXシステムでのみ機能することを目的としたコードを記述している場合は、return 1;を使用して、プログラムが失敗したことを示すことができますが、return EXIT\_FAILURE;の方が移植性が高くなります。

コメントを残す

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