Sinh số ngẫu nhiên trong C++

54
Lập trình C++

1. Cách sinh số nguyên ngẫu nhiên

Để sinh số nguyên trong lập trình C/C++. Chúng ta có thể sử dụng hàm rand(). Hàm này trả về một số nguyên có kiểu dữ liệu là int

Ví dụ dưới đây sẽ sinh ngẫu nhiên 10 số nguyên dương:

#include <iostream>
#include <stdlib.h>
using namespace std;

int main() {
   for (int i=0; i<10; i++) {
    cout << rand() << " ";
   }
   return 0;
}

Tuy nhiên, hàm rand() này sẽ không hề random ra các số mới khi bạn chạy code ở các lần sau. Nghĩa là, kết quả của code trên ở mọi lần chạy sẽ đều random ra 5 số giống nhau. Bạn có thể thử chạy đoạn code trên nhiều lần để kiếm chứng.

2. Sinh số ngẫu nhiên srand()

#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

int main() {
    int r;
    srand((int)time(0));
    for(int i = 0; i < 5; ++i) {
        r = rand();
        cout << r << " ";
    }
    return 0;
}

3. Sinh số ngẫu nhiên trong đoạn [min, max]

#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;

int random(int minN, int maxN){
    return minN + rand() % (maxN + 1 - minN);
}

int main(){
    srand((int)time(0));
    int r;
    for(int i = 0; i < 1000; ++i){
        r = random(10,100);
        cout << r << " ";
    }
}