C++生成随机数(随机整数/浮点数)方法

博客介绍了产生一定范围随机数的通用表示公式,包括取得[a,b)、[a,b]、(a,b]的随机整数的公式,通用公式a + rand() % n ,a到b之间随机整数的另一种表示,以及取得0~1之间浮点数的公式。

产生一定范围随机数的通用表示公式

要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;
要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;
要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;
通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。
要取得a到b之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)。
要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)。

C++ 中,生成随机数通常需要用到 `<random>` 和 `<cstdlib>` 库。首先,你需要包含这两个头文件,并定义一个 `std::mt19937` 类型的对象,它是 C++11 引入的 Mersenne Twister 随机数引擎。下面是一个简单的示例,展示如何生成整数浮点数以及随机字符: ```cpp #include <iostream> #include <random> #include <string> // 定义随机数生成器 std::mt19937 generator(std::chrono::system_clock::now().time_since_epoch().count()); // 生成整数范围内的随机数 int random_int(int min, int max) { std::uniform_int_distribution<> distribution(min, max); return distribution(generator); } // 生成0到1之间的随机浮点数 double random_float() { std::uniform_real_distribution<> distribution(0.0, 1.0); return distribution(generator); } // 生成指定长度的随机字符串(仅限ASCII字符) std::string random_string(size_t length) { std::string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()_+~`|}{[]:;?><,./-=\\"; std::string result(length, '\0'); for (size_t i = 0; i < length; ++i) { result[i] = chars[random_int(0, chars.size() - 1)]; } return result; } int main() { int random_integer = random_int(0, 100); // 示例:生成0到100之间的随机整数 double random_float_value = random_float(); // 示例:生成0.0到1.0之间的随机小数 std::string random_string_example = random_string(10); // 示例:生成一个长度为10的随机字符串 std::cout << "Random Integer: " << random_integer << "\n"; std::cout << "Random Float: " << random_float_value << "\n"; std::cout << "Random String: " << random_string_example << "\n"; return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

象牙塔小明

您的鼓励是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值