Khái niệm
Khi sinh số ngẫu nhiên, cần kiểm soát dãy số sinh ra. randomize() và srand() dùng để gieo hạt (seed) cho bộ sinh số ngẫu nhiên.
- randomize() dùng đồng hồ máy tính để tạo hạt ngẫu nhiên.
- srand() cho phép chỉ định giá trị khởi tạo cho bộ sinh.
Chương trình 1: Sử dụng rand() không gieo hạt
Mỗi lần chạy cho cùng một dãy số.
#include <stdio.h>
int main() {
for (int i = 0; i < 10; i++)
printf(" %d ", rand());
return 0;
}
Kết quả
1804289383 846930886 1681692777 1714636915 1957747793 424238335 719885386 1649760492 596516649 1189641421
Chương trình 2: Sử dụng srand(time(0))
Mỗi lần chạy cho dãy số khác nhau (dựa trên thời gian hiện tại).
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(0)); // gieo hạt bằng thời gian hiện tại
for (int i = 0; i < 10; i++)
printf(" %d ", rand());
return 0;
}
Kết quả
1919778910 1203408690 1755813469 1976428341 37040990 1849384103 986990763 2040061815 391541163 1718314135