C/C++におけるrand()関数の乱数発生の使い方

4544 ワード

一、rand()
1、rand()はパラメータを必要とせず、0から最大乱数までの任意の整数を返します.最大乱数のサイズは通常、固定された大きな整数です.すなわち、rand()は、0からRAND_までの範囲を返すMAX(32767)間の擬似乱数(整数).2、rand()関数に必要なヘッダファイルは、「stdlib.h」rand()関数プロトタイプ:int rand(void);rand()関数を使用して0-99以内のランダム整数を生成します:int number=rand()%100;3、rand()関数を呼び出す前に、srand()関数を使用して乱数シードを設定することができ、乱数シードが設定されていない場合、rand()関数は呼び出し時に、自動的に乱数シードを設計するのは1である.ランダムシードは同じで、発生するたびにランダム数も同じです.次のように、1~10のランダム値を生成します.この例では、乱数シードは設定されていません.
#include
#include   
int main()  
{  
    int i,j;  
    for(i=0; i<10; i++)  
    {  
        j=1+(int)(10.0 * rand()/(RAND_MAX+1.0));
        //or  j = 1+(int)(rand()%10)  
        printf("%d ",j);  
    }  
}  
//  
3 4 8 7 10 2 4 8 9 6
3 4 8 7 10 2 4 8 9 6 //              

二、srand()
1、srand()関数に必要なヘッダファイルは依然として「stdlib.h"srand()関数プロトタイプ:void srand(usigned int seed);2、通常rand()で発生する乱数は、実行するたびに前回と同じであり、プログラムのデバッグを容易にするためである.毎回異なる乱数を生成するにはsrand(seed)関数を用いてランダム化シードを生成することができ,seedによって異なる乱数を生成することができる.3、「time.h」ヘッダファイルは、srand(time(0))を使用して現在の時間を使用して乱数発生器をランダム化し、2回の実行ごとに異なる乱数シーケンスが得られることを保証し、プログラムの2回の実行間隔が1秒を超えることを要求する.次のように、1~10のランダムな数値を生成します.この例は、実行結果とrand()を比較します.
#include
#include   
#include   
int main()  
{  
    int i,j;  
    srand((int)time(0));  
    for(i=0; i<10; i++)  
    {  
        j = 1+(int)(rand()%10);  
        printf(" %d ",j);  
    }  
}  
8 4 5 3 6 2 3 5 9 8
7 3 6 7 2 2 4 8 6 5//            

三、指定範囲内のランダム整数を生成する方法
1、「型除+加算」を用いる方法は総じて、int num=rand()%n+aと表すことができる.ここで、aは開始値、n−1+aは終了値、nは整数の範囲である.2、1~100を生成する場合、int num=rand()%100+1;3、一般性:rand()%(b-a+1)+a;a~bの間のランダムな整数を表す.(rand()%(b-a+1)は0~b-a間の整数を表すため)4、0~1間の小数を生成するには、まず0~10の整数を取得し、その後、いずれも10で割ると「ランダムから10分位」の10個のランダム小数を得ることができる.「ランダムからパーセンテージ」のランダム小数を得るには、まず0~100の10個の整数を得てから、すべて100で割る必要があります.その他の場合はこのようにします.