C言語のランダム関数シードはそれが何であるかを知らない_この記事を試して、ランダム関数の完全な分析

プラットフォームを共有していただきありがとうございます。http://bjbsair.com/2020-04-10/tech-info/53235.html

序文

この記事では主にC言語のランダム関数について説明していますが、ランダム関数の学習はこれから始まります。準備はいいですか?

乱数

乱数は、主にrand()関数によって生成されます。rand()関数は、正の整数をランダムに生成できます。2バイトの16ビット整数の最大値である 1〜32767の範囲の符号なし整数を生成します。GNU C ++によって生成される乱数範囲は2147483647です。範囲内の各数値は、randがランダムに呼び出されるたびに選択される確率が同じです。**ランダム関数を使用する場合は、#inlcude <stdlib.h>ヘッダーファイルを追加する必要があります。**次のような場合:

C言語のランダム関数シードは何を知らないのですか?この記事を試してください、ランダム関数の包括的な分析

**注:各プログラム実行の結果に対する答えは同じですが、これは明らかに私たちが望んでいることではありません。**これは、rand関数が真の乱数ジェネレータではなく、srand()がrand()の乱数シードを設定するためです。最初にrand()を呼び出す前にsrand()を呼び出さない場合、システムは自動的にsrand()を呼び出します。シードと同じ番号でrand()を呼び出すと、乱数の同じシーケンスが生成されます。生成されるものが毎回異なることを確認したい場合は、randのランダムシードを設定する関数srand()を参照する必要があります。

ランダム関数シード

ランダム関数シードsrand関数は、ライブラリで次のように記述されています。

//接口说明:  
  
time()  returns  the  time  as  the  number  of  seconds  since  the Epoch,  
  1970-01-01 00:00:00 +0000 (UTC).     
  
If tloc is non-NULL, the return value is also stored in the memory  pointed to by tloc.

C言語のランダム関数シードは何を知らないのですか?この記事を試してください、ランダム関数の包括的な分析

意味は次のとおりです。ランダムな結果が毎回異なる場合は、毎回シードを変更する必要があります。time関数は、現在の時間距離197-01-01の説明を返します。異なる時間を実行するたびに、シードとして使用できます。つまり、誰もが学習しますrand()関数では、教師はすべての人にsrand((unsigned int)time(NULL))の理由を書くように求めました。これにより、乱数は時間に束縛され、時間は変化し、乱数は自然に変化します。

実際、srand関数のパラメータは任意に設定できます。擬似ランダムとは、毎回取得されるデータを定期的に追跡できることを意味します。デフォルトでは、数値は10x7fffで、(1 32767)です。設定パラメータがsrand(1000)の場合、生成される乱数は1000〜0x7fffです。

次の例:

C言語のランダム関数シードは何を知らないのですか?この記事を試してください、ランダム関数の包括的な分析

ランダム関数固定範囲

主なアイデアは実際には非常に単純です。バランスを取って実行してください。

C言語のランダム関数シードは何を知らないのですか?この記事を試してください、ランダム関数の包括的な分析

公開された0件のオリジナル記事 ・いい 0 ビュー2424

おすすめ

転載: blog.csdn.net/zxjoke/article/details/105435455