0

0

C++如何生成随机数?(代码示例)

裘德小鎮的故事

裘德小鎮的故事

发布时间:2025-12-19 17:49:02

|

611人浏览过

|

来源于php中文网

原创

C++11推荐用头文件生成随机数,核心是std::random_device(真种子)、std::mt19937(伪随机引擎)和uniform_int/real_distribution(分布),避免重复创建引擎或分布,弃用rand()。

c++如何生成随机数?(代码示例)

在C++中生成随机数,推荐使用C++11引入的 头文件,它比传统的 srand()/rand() 更安全、更灵活、分布更均匀。

std::random_devicestd::mt19937 生成高质量随机数

std::random_device 是真正的随机数生成器(通常基于硬件),用来初始化伪随机数引擎;std::mt19937(梅森旋转算法)是常用且高效的伪随机引擎。

示例:生成 [1, 100] 区间的整数

#include 
#include 

int main() {
    std::random_device rd;                     // 真随机种子
    std::mt19937 gen(rd());                    // 以rd为种子初始化引擎
    std::uniform_int_distribution dis(1, 100); // 定义整数均匀分布 [1, 100]

    for (int i = 0; i < 5; ++i) {
        std::cout << dis(gen) << " ";
    }
    std::cout << "\n";
    return 0;
}

生成浮点随机数(如 [0.0, 1.0))

std::uniform_real_distribution,注意默认区间是左闭右开:

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

聚蜂消防BeesFPD
聚蜂消防BeesFPD

关注消防领域的智慧云平台

下载
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_real_distribution dis(0.0, 1.0); // [0.0, 1.0)

std::cout << dis(gen) << "\n"; // 输出类似 0.372148

避免常见错误:不要重复创建引擎或分布对象

引擎(gen)和分布(dis)应尽量复用,频繁构造会影响性能,还可能因时间相近导致重复种子(尤其用 time(nullptr))。

  • ✅ 正确:引擎和分布在作用域外或函数静态变量中定义一次
  • ❌ 错误:每次调用都 new 一个 mt19937 或反复用 time(0) 初始化
  • ⚠️ 注意:std::random_device 构造开销小,可安全用于种子,但不要把它当分布直接取值(它不保证均匀性)

兼容旧代码?慎用 rand()

rand() 已过时,存在严重缺陷:范围窄(通常仅 0~32767)、低比特位周期短、分布不均。若必须用,至少用 static_cast(rand()) / RAND_MAX 归一化,并记得调 srand(time(nullptr)) ——但请优先迁移到

基本上就这些。现代C++随机数核心就是三件套:真种子 + 好引擎 + 合适分布,组合灵活,语义清晰。

相关专题

更多
c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

52

2025.08.29

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

98

2025.10.23

页面置换算法
页面置换算法

页面置换算法是操作系统中用来决定在内存中哪些页面应该被换出以便为新的页面提供空间的算法。本专题为大家提供页面置换算法的相关文章,大家可以免费体验。

400

2023.08.14

Java 桌面应用开发(JavaFX 实战)
Java 桌面应用开发(JavaFX 实战)

本专题系统讲解 Java 在桌面应用开发领域的实战应用,重点围绕 JavaFX 框架,涵盖界面布局、控件使用、事件处理、FXML、样式美化(CSS)、多线程与UI响应优化,以及桌面应用的打包与发布。通过完整示例项目,帮助学习者掌握 使用 Java 构建现代化、跨平台桌面应用程序的核心能力。

63

2026.01.14

php与html混编教程大全
php与html混编教程大全

本专题整合了php和html混编相关教程,阅读专题下面的文章了解更多详细内容。

31

2026.01.13

PHP 高性能
PHP 高性能

本专题整合了PHP高性能相关教程大全,阅读专题下面的文章了解更多详细内容。

73

2026.01.13

MySQL数据库报错常见问题及解决方法大全
MySQL数据库报错常见问题及解决方法大全

本专题整合了MySQL数据库报错常见问题及解决方法,阅读专题下面的文章了解更多详细内容。

20

2026.01.13

PHP 文件上传
PHP 文件上传

本专题整合了PHP实现文件上传相关教程,阅读专题下面的文章了解更多详细内容。

24

2026.01.13

PHP缓存策略教程大全
PHP缓存策略教程大全

本专题整合了PHP缓存相关教程,阅读专题下面的文章了解更多详细内容。

7

2026.01.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
10分钟--Midjourney创作自己的漫画
10分钟--Midjourney创作自己的漫画

共1课时 | 0.1万人学习

Midjourney 关键词系列整合
Midjourney 关键词系列整合

共13课时 | 0.9万人学习

AI绘画教程
AI绘画教程

共2课时 | 0.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号