c指定範囲乱数の生成

2638 ワード

概要:
C++には独自のrandom関数はなく,乱数を取得するにはrand()とsrand()メソッドを用いることができる.しかしrand()の内部実装は線形同余法で行われるため,生成されるのは真の乱数ではなく,一定範囲でランダムと見なす擬似乱数である.
rand:
rand()は、0~RAND_を返します.MAX間の乱数、RAND_MAXの値はintビット数に関係し,最小は32767である.ただしrand()は使い捨てであり、システムのデフォルトの乱数シードは1であるため、乱数シードが変わらない限り、生成される乱数シーケンスは変更されません.
Srand:
srand()は、rand()が乱数を生成するときの乱数シードを設定するために使用できます.異なるシードを設定することで、異なる乱数シーケンスを取得できます.一般的にはsrand(unsigned int)(time(NULL))の方法を用いて,システムクロックを用いて異なる乱数シードを生成する.time()を呼び出し、ヘッダファイルに追加する必要があります.
#include
#include
#include
using namespace std;
int main()
{
    srand((unsigned)time(NULL));
    for(int i=0;i<20;i++)
    cout<' ';
    return 0;
}

指定した範囲の乱数を取得します.
一定範囲の乱数を取得することは,rand()で得られた乱数に対して余剰操作を求めることである.
[0,x)のランダム整数を取得する:rand()%x;[0,x]のランダム整数を取得する:rand()%(x+1);[a,b)のランダム整数を取得する:rand()%(b-a)+a;取得する(a,b]のランダム整数:rand()%(b-a)+a+1;[a,b]のランダム整数:rand()%(b-a+1)+aを取得する.0-1間の浮動小数点数:rand()/double(RAND_MAX)を取得します.
#include
#include
#include
#define randomInt(a,b) (rand()%(b-a+1)+a)
using namespace std;
int main()
{
    srand((unsigned)time(NULL));
    for(int i=0;i<20;i++){
    // [1-100]      
    cout<1,100)<<' ';
    }

    return 0;
}

あなたに役に立つことを望みます!