khóa học Lập trình thiết kế C++ khóa huấn luyện và đào tạo lập trình C++ căn bạn dạng Phát sinh số bỗng dưng trong C++ (Random number generation)

Dẫn nhập

Ở bài học trước, mình đã share cho các bạn về TỪ KHÓA BREAK & CONTINUE. Từ khóa break được dùng để ngừng các vòng lặp while, do-while, for cùng câu đk switch. Từ khóa continue sẽ nhảy mang lại cuối vòng lặp hiện nay tại, và thực thi lần lặp tiếp theo.

Bạn đang xem: Cách dùng hàm rand trong c

Trong bài xích hôm nay, mình sẽ reviews cho chúng ta về phương pháp Phát sinh số tự nhiên trong C++ (Random number generation). Chúng ta có thể ứng dụng nó vào phần đa chương trình đề nghị phát sinh số ngẫu nhiên, những trò chơi, hoặc để áp dụng vào những bài học kinh nghiệm về mảng tiếp theo.

Nội dung

Để phát âm hiểu bài này xuất sắc nhất các bạn nên có kiến thức và kỹ năng cơ phiên bản về:

Trong bài xích ta đã cùng tò mò các vấn đề:

Tổng quan liêu về tạo nên số ngẫu nhiênPhát sinh số tình cờ trong C++Phát sinh số hốt nhiên trong C++ 11

Tổng quan về tạo nên số ngẫu nhiên

Phát sinh các số ngẫu nhiên được ứng dụng không hề ít trong lập trình, đặc biệt là trong các trò chơi, các chương trình cần tài liệu ngẫu nhiên, ….

Ví dụ về trò chơi phun máy bay, nếu nó không tồn tại những sự khiếu nại ngẫu nhiên, mọi máy bay sẽ luôn luôn luôn xuất hiện thêm cùng 1 vị trí, tiến công bạn theo cùng một cách, đều vật thể mở ra trên mặt đường không khi nào thay đổi, vv ... Cùng đó không phải là 1 trò đùa hay.

*

Vậy số tình cờ được chế tác ra bằng cách nào?

Trong cuộc sống, các bạn thường tạo thành số ngẫu nhiên bằng phương pháp như rung lắc 1 con xúc xắc, rút 1 lá thăm, tung 1 đồng xu, … và không ít vấn đề hốt nhiên trong cuộc sống đời thường khác.

Trong lập trình, những thứ mọi được khiến cho từ 2 số 0 cùng 1, chỉ tất cả đúng hoặc sai, không có trường hợp ở giữa. Máy vi tính không thể rung lắc 1 bé xúc xắc, rút 1 lá thăm, tung 1 đồng xu, … công dụng mà nó gửi ra, luôn là kết quả có thể dự đoán trước, ví dụ như 1 + 1 luôn luôn là 2, không thể là 1 trong giá trị khác.

Vì vậy, các máy tính không có công dụng tạo ra số ngẫu nhiên. ý muốn tạo số ngẫu nhiên, xây dựng viên cần tự kiến tạo 1 hệ thống phát sinh số ngẫu nhiên.

Phát sinh số ngẫu nhiên là 1 trong vấn đề rất cần thiết trong lập trình, để đáp ứng nhu cầu đó, C++ đã thi công sẵn một số thuật toán tạo nên số ngẫu nhiên.

Phát sinh số đột nhiên trong C++

Ngôn ngữ C++ cung ứng 2 hàm có chức năng khởi chế tạo và tạo nên số ngẫu nhiên, 2 hàm này thuộc thư viện cstdlib:

Khởi chế tác số thốt nhiên (initialize random number generator)

Để khởi tạo ra số ngẫu nhiên, bạn sử dụng hàm srand() thuộc thư viện cstdlib:

void srand(unsigned int seed);

Lưu ý:

Hàm srand() nhận vào trong 1 đối số vẻ bên ngoài số nguyên ko dấu, được hotline là seed (hạt giống).Với từng seed không giống nhau, hàm srand() sẽ tạo nên ra những cỗ số tự nhiên khác nhau. Rất nhiều số tự nhiên này đang được mang ra bởi hàm rand().Hai khởi tạo nên số ngẫu nhiên khác nhau với cùng một seed sẽ khởi tạo ra và một kết quả.Chỉ nên được gọi hàm srand() 1 lần trước khi phát sinh số ngẫu nhiên.

Kết quả tạo ra số bỗng dưng của hàm rand() nhờ vào vào cực hiếm của seed (hạt giống), nếu mỗi lần khởi tạo ra đều sử dụng cùng 1 seed, những số đột nhiên nhận được vẫn là như nhau.

Vì vậy, quý hiếm của seed (hạt giống) cũng phải là một trong những số ngẫu nhiên trong mỗi lần truyền vào hàm srand(). Nghe có vẻ như khá mâu thuẩn, chúng ta đang cần 1 số ít ngẫu nhiên để tạo ra các số ngẫu nhiên. Vậy, vụ việc là bạn ta cần tìm ra 1 số chuyển đổi mỗi khi công tác được chạy, chưa hẳn là số do người dùng chọn.

Một chiến thuật cho vụ việc này là dựa trên thời gian hệ thống. Mỗi lần chương trình được chạy, thời hạn sẽ khác nhau. Nên tín đồ ta lấy quý giá thời gian hệ thống làm seed (hạt giống), tác dụng sẽ là đều số ngẫu nhiên khác nhau trong những lần chạy chương trình.

Để rước được thời gian từ hệ thống, chúng ta cũng có thể sử dụng hàm time() nằm trong thư viện ctime. Hàm này đang trả về số giây từ 00:00 giờ, ngày 01 tháng một năm 1970.

Xem thêm: Thành Tích, Lịch Sử Đối Đầu Bồ Đào Nha Đức, Lich Sử Đối Đầu Bồ Đào Nha Vs Đức

Ví dụ:

#include #include // for rand() & srand()#include // for time()using namespace std;int main()// initialize random number generatorsrand(time(0)); // mix initial seed value lớn system clock// generate random number// ...return 0;Ví dụ trên mới chỉ khởi chế tạo ra số thiên nhiên từ thời gian hệ thống, biện pháp phát sinh các số bỗng nhiên sẽ được giới thiệu ở phần tiếp theo.

Phát sinh số ngẫu nhiên (generate random number)

Để phát sinh một số ngẫu nhiên, bạn áp dụng hàm rand() trực thuộc thư viện cstdlib:

int rand(void);

int rand(void);Lưu ý:

Hàm rand() trả về một số ít nguyên ngẫu nhiên trong tầm từ 0 cho RAND_MAX.RAND_MAX là 1 trong những hằng số có mức giá trị 32767, được quan niệm trong thư viện cstdlib.

Ví dụ về tạo ra số ngẫu nhiên:

int v1 = rand();// v1 in the range 0 to 32767int v2 = rand() % 100;// v2 in the range 0 khổng lồ 99int v3 = rand() % 100 + 1;// v3 in the range 1 to lớn 100int v4 = rand() % 30 + 1985;// v4 in the range 1985-2014Một số ví dụ như về gây ra số ngẫu nhiên

Ví dụ về trò đùa đoán số từ 1 số phát sinh ngẫu nhiên:

#include #include // for rand() và srand()#include // for time()using namespace std;int main(){int nSecret, nGuess;// initialize random seedsrand(time(NULL));// generate secret number between 1 và 10nSecret = rand() % 10 + 1;do {cout > nGuess;if (nSecret nGuess) cout Output:

*

Chương trình trên vạc sinh một số ngẫu nhiên từ một đến 10, với yêu cầu người tiêu dùng lặp lại việc chọn 1 số sao để cho trùng cùng với số tự nhiên của hệ thống.

Ví dụ tạo ra một hàng 10 chữ số ngẫu nhiên:

#include #include // for rand() & srand()#include // for time()using namespace std;int main(){srand(time(0)); // phối initial seed value lớn system clockfor (int count = 0; count Output:

*

Phát sinh số hốt nhiên trong C++ 11

C++ 11 cung ứng thêm tương đối nhiều thuật toán phát sinh số tự nhiên thuộc tủ sách random.

Ví dụ về 1 thuật toán tạo ra số ngẫu nhiên Mersenne Twister thường được sử dụng:

#include #include using namespace std;int main(){random_device rd;// only used once to initialize (seed) enginemt19937 rng(rd());// random-number engine used (Mersenne-Twister in this case)// đầu ra 10 random numberfor (int i = 0; i uni(1, 100);for (int i = 0; i Output:

*

Thuật toán trên tạo ra các số nguyên ko dấu 32 bit, nên sẽ sở hữu phạm vi lớn hơn không hề ít so với thực hiện hàm rand(). Bạn cũng có thể sử dụng hình trạng mt19937_64 cho biến hóa rng để sở hữu phạm vi số lớn hơn (64 bit).

Ví dụ trên có áp dụng từ khóa auto, chi tiết về nó sẽ được hướng dẫn trong bài TỪ KHÓA auto TRONG C++ (The auto keyword).

Vẫn còn không ít thuật toán tạo ra số thiên nhiên khác, các bạn có thể bài viết liên quan và phân chia sẽ lại cho mọi fan nhé.

Kết luận

Qua bài học kinh nghiệm này, các bạn đã nắm rõ về phương pháp Phát sinh số bất chợt trong C++ (Random number generation). Chúng ta có thể ứng dụng nó vào hầu như chương trình yêu cầu phát sinh số ngẫu nhiên, các trò chơi, hoặc để ứng dụng vào những bài học kinh nghiệm về mảng tiếp theo.

Trong bài bác tiếp theo, bản thân sẽ giới thiệu cho các bạn về MẢNG 1 CHIỀU vào C++ (Arrays).

Cảm ơn chúng ta đã theo dõi bài bác viết. Hãy nhằm lại phản hồi hoặc góp ý của chính mình để vạc triển bài viết tốt hơn. Đừng quên “Luyện tập – thử thách – không lo ngại khó”.

Thảo luận

Nếu các bạn có ngẫu nhiên khó khăn hay thắc mắc gì về khóa học, đừng rụt rè đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc vào mục HỎI và ĐÁP trên thư viện kco.vn.com để nhận ra sự cung ứng từ cùng đồng.