Các anh chị có thể chỉ em cách Random cả âm cả dương không ạ
Em làm bằng cách này thì chỉ ra mỗi số dương ạ .
Em xin cảm ơn
Cách random ra cả số âm và số dương trong C++
Bạn vui lòng chép mã và đăng thay cho hình.
Có 2 cách:
- Ngẫu nhiên trong phạm vi từ
a
đếnb
. Trong đóa
là số âm. - Ngẫu nhiên dấu (
1
hoặc-1
) và nhân (*) với số vừa tạo ngẫu nhiên.
4 Likes
#include <random> // std::mt19937 và std::uniform_int_distribution
#include <ctime> // time(0)
int main()
{
// tạo 1 pseudo-random bit generator, "máy" tạo bit ngẫu nhiên
std::mt19937 prbg{time(0)};
// ngẫu nhiên 1 số thuộc đoạn [a, b] (bao gồm cả a và b), xài `prbg` tạo ở trên
int x = std::uniform_int_distribution<int>{a, b}(prbg);
}
5 Likes
ngẫu nhiên ra số âm hoặc dương ví dụ số chẵn là dương, lẽ là âm
int dau = rand()&1 ? -1 : 1;
xong rồi nhân với số dương random ra dc
a[i] = dau * (rand()%1000);
mình nghĩ nếu dùng lambda expression thì nhìn code có vẻ đẹp hơn nhưng mà cái này mình ko rành lắm
auto f = []{return (rand() % 1000) * (rand() & 1 ? 1 : -1);};
a[i] = f();
2 Likes
rand() Considered Harmful
- Aug 17, 2013 at 11:04AM
by Stephan T. Lavavej
từ năm 2 lẻ 3 đã kêu gọi bỏ rand() rồi :V Xài C++11 lambda mà nhét cái rand vào ngứa mắt lắm :V :V :V
5 Likes
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
bool randChance(int chance)
{
return rand() % 10000 < chance;
}
int main()
{
srand(time(0));
int N = 85000000;
int chance = 1500; // 15% chance
int success = 0;
for (int i = 0; i < N; ++i)
success += randChance(chance);
std::cout << std::fixed << std::setprecision(2) << success * 100.0 / N << "%\n";
}
code này in ra 15% ở GCC, nhưng ở MSVC nó lại ra 18.31%, vì sao :V
3 Likes
ty ty
mình học ở trường ông thầy chỉ dạy C++ standard thôi, còn mấy cái lambda là mấy cái nice to have, thêm vào assignment thì dc bonus, nên ko biết mấy cái này lắm.
còn bây giờ thì cắm đầu vào python vì thấy dùng thoải mái hơn C++ nhiều
3 Likes
vọc Python cho sướng đi rồi về lại C++ nhanh gấp 50 lần =]]
3 Likes