30/09/2018, 16:27
Một câu hỏi về hàm rand()?
Hì, mình có 1 thắc mắc về hàm rand() 1 chút! Mình có lập 1 mảng số nguyên dùng hàm rand(), nhưng tại sao mỗi lần chạy chương trình thì nó chỉ cho 1 dãy số duy nhất . Bạn nào có thể giải thích giúp mình tại sao và làm cách nào để nó mỗi lần F9 thì mỗi lần tạo ra dãy ngẫu nhiên mới được hok… Thank trước
Bài liên quan
tham khảo link này nha bạn
À, vì cái hàm rand nó nhận vào một tham số gọi là
seed
(gọi là nhân hoặc hạt) từ hàmsrand
dùng để làm nhân cho cái hàmrand
này. Khi @Programmer_Riot chạy hàm này mà không có tham sốseed
thì nó lấy số mặc định từ hàmsrand
. Số này không đổi dẫn đến kết quả random cũng không đổi. Hình như Đạt có đọc ở đâu số này mặc định là0
.Đây là một đoạn code dùng hàm
time
để làm nhân, tức là hàmtime
này sẽ trả về một số thay đổi theo thời gian. Suy ra hàmsrand
sẽ cóseed
mới sau mỗi lần chạy. Vì thế mình sẽ nhận được chuỗi số random.Đây là một đoạn code ví dụ sử dụng
srand
vớiseed
làtime
P/S: Video ở trên mà @TTmagic chỉ ra cũng nói rất rõ về điều này
Ở phần hàm rand() trong thư viện tham khảo C thì có mục:
Exceptions (C++)
No-throw guarantee: this function never throws exceptions.
Cái mục này nghĩa là gì vậy anh Đạt.
Phần này nói về khả năng trả về exception. Có nghĩa là thông báo lỗi khi có lỗi, chỉ hỗ trợ trong C++, C không có. Ở đây hàm rand() đảm bảo là sẽ không gửi về exception gì cả. Có nghĩa là người ta không có làm phần này cho hàm rand()