30/09/2018, 23:12
Hỏi về câu lệnh rand trong C++
Em làm random như thế này, em khó hiểu khi nó đều ra cùng 1 kết quả khi em bật lên, PhoBo vẫn là 15k VND, ComGa 17k VND, tại sao mỗi lần em debug và chạy nó thì in ra 1 kết quả vậy ạ ??
Bài liên quan
ok, đc rồi anh, mà nó lại ra cả 3 kết quả trùng với nhau thế này @@
srand() dùng để gán seed sinh số ngẫu nhiên cho lệnh rand(). Do đó gọi srand() ngay đầu ct thôi, không cần sau mỗi lệnh rand() đâu
khi em sử dụng srand() thì nó báo lỗi warning nhiều lắm ạ, em cũng ko hiểu câu anh Quân nói nữa @@
xóa tất cả mấy cái srand tầm bậy kia đi
anh ơi, vậy là mỗi khi xài rand thì mình phải xài srand để kèm theo để làm nó luôn luôn thay đổi hả anh, cảm ơn các anh nhiều lắm
chỉ xài srand 1 lần duy nhất ngay sau int main() (hay trước khi gọi rand lần đầu tiên). Đừng gọi nó 2 lần. Đừng gọi nó nhiều lần.
ok, em sẽ ghi nhớ, cảm ơn anh
Với cho em hỏi, các anh chỉ em làm cho “Tien do update menu: 1%” ko bị spam nhiều dòng mà nó chỉ thay đổi chỗ 1% thành 2% sau đó tăng dần đc ko ạ @@
có 1 cái trick nhỏ là thêm ký tự
\r
vô nữa.vd
cout << "Tien do update menu: " << n << "%\r";
nhưng cái này hình như ko xài được khi xuất ra file, chỉ xài được cho màn hình console thôi.
\r
là ký tự trở về đầu dòng. Lần xuất tiếp theo sẽ in đè lên cùng 1 dòng.anh ơi, xài srand bị warning thế này anh ạ, với ngoài cách \r, em mún biết cách khác có thể xài đc khi xuất file thì em tìm google với từ khóa gì vậy anh
VS nó kỹ tính nên báo warning, em viết lại là
srand(static_cast<unsigned int>(time(NULL));
là hết, nhưng bị cái dài dòng.xuất ra file thì có lẽ ko cần xuất cái tiến độ vào file đâu, khỏi cần tìm hiểu. Hoặc thích thì có thể xài
istream::seekg
lui ngược về mấy ký tự rồi viết đè lại.Em copy istream của anh rồi kết hợp search trên mạng nó ra lỗi identifer gì đó anh ạ
ostream::seekp chứ nhưng mà ko phải xài ở đây. Xài \r đủ rồi.
gọi
fout.seekp(fout.tellp() - 10);
chẳng hạn, số âm là lùi mấy ký tự đó nhưng mà có biết in ra bao nhiêu ký tự đâu, vd lúc thì 20 kt, lúc thì 21 ky, lúc thì 22 kt chẳng hạn. Xài \r đủ ròidạ, cảm ơn anh rất nhiều ạ
Bạn chỉ cần dùng srand cho 1 lần biên dịch là được ah. Giống như @tntxtnt nói á bạn.
ok, cảm ơn bạn, mình sẽ rút kinh nghiệm