プラットフォームを共有していただきありがとうございます。http://bjbsair.com/2020-04-10/tech-info/53235.html
序文
この記事では主にC言語のランダム関数について説明していますが、ランダム関数の学習はこれから始まります。準備はいいですか?
乱数
乱数は、主にrand()関数によって生成されます。rand()関数は、正の整数をランダムに生成できます。2バイトの16ビット整数の最大値である 1〜32767の範囲の符号なし整数を生成します。GNU C ++によって生成される乱数の範囲は2147483647です。範囲内の各数値は、randがランダムに呼び出されるたびに選択される確率が同じです。**ランダム関数を使用する場合は、#inlcude <stdlib.h>ヘッダーファイルを追加する必要があります。**次のような場合:
**注:各プログラム実行の結果に対する答えは同じですが、これは明らかに私たちが望んでいることではありません。**これは、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.
意味は次のとおりです。ランダムな結果が毎回異なる場合は、毎回シードを変更する必要があります。time関数は、現在の時間距離197-01-01の説明を返します。異なる時間を実行するたびに、シードとして使用できます。つまり、誰もが学習しますrand()関数では、教師はすべての人にsrand((unsigned int)time(NULL))の理由を書くように求めました。これにより、乱数は時間に束縛され、時間は変化し、乱数は自然に変化します。
実際、srand関数のパラメータは任意に設定できます。擬似ランダムとは、毎回取得されるデータを定期的に追跡できることを意味します。デフォルトでは、数値は10x7fffで、(1 32767)です。設定パラメータがsrand(1000)の場合、生成される乱数は1000〜0x7fffです。
次の例:
ランダム関数固定範囲
主なアイデアは実際には非常に単純です。バランスを取って実行してください。