1. rand()によって生成されたランダム番号:
- rand():ランダムな数値を生成し、0からRAND_MAX(32767)までの疑似ランダム整数を返します。
- rand()関数はランダムな数値を生成できますが、それは実際のランダムな数値ではなく、疑似ランダムな数値です。
いわゆる「疑似ランダム数」とは、偽のランダム数ではなく、特定のアルゴリズムによって得られた仮想状態のランダム数を指します。コンピューターは相対ランダム数しか生成できず、これらのランダム数はランダムで規則的です。 、その一部は特定の法律に従い、他の部分はいかなる法律にも従わない
- rand()関数は、使用時にsrand(seed)関数を呼び出す必要があります。つまり、シードを提供する必要があります。srand()が使用されない場合、システムは自動的にシードに値、つまりsrand(1)を割り当てます。
- rand()およびsrand()を呼び出すときに、<stdlib.h>ヘッダーファイルを導入する必要があります
2. rand()は、範囲内のランダムな数値を生成します
実際の開発では、一定の範囲内のランダムな数字が必要になることが多いので、残りの操作を行って加算操作を行うのが一般的な方法です。
- 0から99までのランダムな数値を生成するための使用法は、次のとおりです。
int num = rand()%100;
- 1〜100のランダムな数値を生成するための使用法は、次のとおりです。
int num = rand()%100 +1
- ランダムな数80-120を生成したいかどうか考えてください
int num = rand()%41 +80
//用代码演示一下
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
int main(){
for (int i = 0; i < 20; i++){
int num = rand() % 41 + 80;
printf("%d\t",num);
}
system("pause");
return 0;
}
//运行结果为
80 97 100 94 102 101 119 82 105 108 86 99 114 97 119
120 82 91 110 104 请按任意键继续. . .
3 srand()関数
- srand()関数に必要なヘッダーファイルはまだ次のとおりです:<stdlib.h>
- srand()関数のプロトタイプ:void srand(使用されたintシード);
- srand()関数は、ランダム数ジェネレーターを初期化するためのものです。疑似乱数ジェネレータは、シードとして渡されたパラメータで初期化されます。
同じシードを使用すると、rand()関数の後に同じランダム番号が表示されます。上記のデフォルトのsrand(1)について説明しましたが、シードを初期化するために1を直接使用しても、取得されるランダム番号は疑似ランダムのままです。
- 実際の開発では、時間をパラメータとして使用できます。播種の時間が毎回異なる限り、生成されるシードは異なり、最終的なランダム数も異なります。通常
、<time.h>ヘッダーファイルのtime関数を使用します。秒単位の正確な時間をシードとして使用できます。
//我们在代码中实现随机数结果
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<windows.h>
#include<time.h>
#include<stdlib.h>
int main(){
srand(time(0));
for (int i = 0; i < 20; i++){
int num = rand() % 41 + 80;
printf("%d\t",num);
}
system("pause");
return 0;
}
- 最初の実行の結果
103 95 113 118 89 91 83 92 99 92 117 97 91 82 97
91 83 89 91 109 请按任意键继续. . .
- 2回目の実行の結果
81 80 85 84 114 96 110 107 102 83 83 109 113 96 90
82 105 102 81 114 请按任意键继续. . .