C++如何生成随机数_C++ rand函数与C++11 random库的使用

C++中生成随机数推荐使用C++11 random库,因其随机性好、分布均匀且功能丰富;传统rand()函数虽简单但存在分布不均、随机性弱等缺点,适用于简单场景,新项目应优先选用random库。

c++如何生成随机数_c++ rand函数与c++11 random库的使用

在C++中生成随机数,主要有两种方式:使用传统的 rand() 函数和现代的 C++11 random 库。前者来自C语言标准库,简单但存在局限;后者功能更强大、分布更均匀,推荐在新项目中使用。

使用 rand() 函数生成随机数

rand() 是 cstdlib 头文件中的函数,返回一个0到RAND_MAX之间的整数(通常为32767)。要生成指定范围内的随机数,常用取模运算。

注意:srand() 必须调用一次来设置种子,否则每次程序运行都会得到相同的“随机”序列。

示例代码:

立即学习“C++免费学习笔记(深入)”;

#include
#include iostream>
#include

int main() {
    srand(static_cast(time(0))); // 以当前时间作为种子
    int random_num = rand() % 100; // 生成 0~99 的随机数
    std::cout     return 0;
}

缺点:

随机数分布不均匀,尤其取模后低端值概率偏高RAND_MAX 值较小,随机性有限线程安全性差缺乏对分布类型的支持(如正态分布)

使用 C++11 random 库(推荐)

C++11 引入了 头文件,提供了更灵活、高质量的随机数生成机制。核心由三部分组成:

引擎(Engine):如 std::mt19937,梅森旋转算法,生成高质量伪随机数分布(Distribution):定义随机数的分布方式,如均匀分布、正态分布等种子生成器(可选):如 std::random_device,用于生成真随机种子

示例:生成 1~100 的均匀分布整数

#include stream>
#include

int main() {
    std::random_device rd; // 真随机种子源
    std::mt19937 gen(rd()); // 随机数引擎
    std::uniform_int_distribution dis(1, 100); // 分布范围 [1, 100]

    int random_num = dis(gen);
    std::cout     return 0;
}

支持多种分布类型:

std::uniform_real_distribution:生成浮点型均匀分布std::normal_distribution:正态分布std::bernoulli_distribution:伯努利分布(true/false)

如何选择?

如果只是写个小测试或学习用途,rand() 足够简单。但在实际开发、科学计算或需要高质量随机性的场景中,C++11 random 库是首选。它不仅提供更好的随机性,还能精确控制分布形态,代码也更清晰易读。

基本上就这些。新项目尽量用 random 库,老代码维护时注意 rand() 的坑。

以上就是C++如何生成随机数_C++ rand函数与C++11 random库的使用的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1488068.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 11:14:20
下一篇 2025年12月19日 11:14:24

相关推荐

发表回复

登录后才能评论
关注微信