Tạo ngẫu nhiên trong C/C++

Một phần của tài liệu Kỹ thuật lập trình Ôn Tập Function, Array, Struct (Trang 37 - 44)

▪ Hàm srand()

Cú pháp: void srand (unsigned int seed);

Dùng để khởi tạo một số ngẫu nhiên theo một số seed.

Để cho mỗi số seed khác nhau người ta thường dùng kèm với unsigned int time(NULL) trong thư viện time.h, hàm time(NULL) trả về số giây đã trôi qua kể từ ngày 1/1/1970.

Tạo ngẫu nhiên trong C/C++

▪ Hàm rand()

Cú pháp: int rand(void);

Trả về một số nguyên giả random trong khoảng từ 0 đến RAND_MAX.

Hằng RAND_MAX được định nghĩa trong stdlib.h đảm bảo ít nhất bằng 32767.

Nếu chỉ dùng hàm rand() thì sẽ cho ra những số random giống nhau mỗi lần chạy, vì vậy người ta thường khai báo srand(time(NULL)) trước để kết quả random mỗi lần mỗi khác nhau.

Để lấy số ngẫu nhiên từ 0 đến n, ta sử dụng rand()%(n+1)

Tạo ngẫu nhiên trong C/C++#include<stdio.h> #include<stdio.h> #include<stdlib.h> #include<time.h> int main() { int a, b; srand(time(NULL));

printf("a = %d\n", rand()%100); //Ngẫu nhiên từ 0 đến 99 printf("b = %d\n", 50+rand()%51); // 50 đến 100

Câu hỏi

Phát sinh ngẫu nhiên mảng các số nguyên có K phần từ (100K  200). Yêu cầu các phần tử được phát sinh ngẫu nhiên trong đoạn [1,10000]

Tạo ngẫu nhiên trong C/C++

▪ Tạo ngẫu nhiên Số thực: Để lấy giá trị từ 0.0 to 1.0

Tạo ngẫu nhiên trong C/C++

C code:

#include <stdio.h> /* printf, NULL */ #include <stdlib.h> /* srand, rand */ #include <time.h> /* time */

int main() {

srand (time(NULL)); // seed initialization for (int i = 0; i < 10; ++i)

{

float r = (float) (rand()) / (float) (RAND_MAX); printf("%f\n", r);

}

return 0; }

Tạo ngẫu nhiên trong C/C++

C++ code

#include <iostream> /* std::cout, std::enld */ #include <stdlib.h> /* srand, rand */

#include <time.h> /* time */ int main()

{

srand (time(NULL)); // seed initialization for (int i = 0; i < 10; ++i)

{

float r = static_cast <float> (rand()) / static_cast <float> (RAND_MAX); std::cout << r << std::endl;

}

Một phần của tài liệu Kỹ thuật lập trình Ôn Tập Function, Array, Struct (Trang 37 - 44)

Tải bản đầy đủ (PDF)

(53 trang)