C++生成随机数的实现代码

生成随机数是C++编程中常常需要使用到的功能之一,C++标准库提供了一些库函数可以实现生成随机数的功能,下面我将详细讲解“C++生成随机数的实现代码”的完整攻略:

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

rand()函数是C++标准库提供的用于生成随机数的函数。使用rand()需要包含头文件

  1. 设置随机数种子

要想生成真正的随机数,必须先设置不同的随机数种子,否则每次运行程序生成的随机数都是相同的。设置随机数种子可以用srand()函数。

以下是示例代码:

#include <iostream>
#include <cstdlib>    // 包含随机数函数所需的头文件 

using namespace std;

int main() {
   // 设置随机数种子 
   srand( (unsigned)time( NULL ) );

   // 希望生成的随机数个数
   for(int i=0; i<10; i++){
      // rand()会返回一个介于0和RAND_MAX之间的随机整数
      cout << rand() << endl;
   }

   return 0;
}

在上述代码中,使用srand()函数设置了随机数种子,设置的随机数种子是time(NULL),这里time(NULL)返回当前时间的秒数,保证了每次运行程序都会生成不同的随机数序列。

  1. 生成随机数

调用rand()函数可以生成随机数。

以下是示例代码:

#include <iostream>
#include <cstdlib>    // 包含随机数函数所需的头文件 

using namespace std;

int main() {
   // 设置随机数种子 
   srand( (unsigned)time( NULL ) );

   // 希望生成的随机数个数
   for(int i=0; i<10; i++){
      // rand()会返回一个介于0和RAND_MAX之间的随机整数
      cout << rand() << endl;
   }

   return 0;
}

在上述代码中,利用for循环调用rand()函数生成10个随机数。

使用random库函数生成随机数

C++11标准新增了一个随机数库,即头文件,该头文件中提供了多种生成随机数的方法,其中使用较多的是std::uniform_int_distribution和std::uniform_real_distribution。

  1. 使用std::uniform_int_distribution生成整型随机数

以下是示例代码:

#include <iostream>
#include <random>

using namespace std;

int main() {
   random_device rd;   // 用于获取随机数种子
   mt19937 gen(rd());  // 产生随机数引擎,初始化随机数种子

   uniform_int_distribution<int> dis(1, 100);  // 生成[1, 100]范围内的整型随机数

   // 生成10个随机数
   for(int i=0; i<10; i++){
      cout << dis(gen) << endl;
   }

   return 0;
}

在上述代码中,创建了一个随机数种子random_device,使用该随机数种子初始化随机数引擎mt19937,然后创建std::uniform_int_distribution对象dis,它可以生成[1, 100]范围内的整型随机数,最后使用dis(gen)函数调用来生成10个随机数。

  1. 使用std::uniform_real_distribution生成实型随机数

以下是示例代码:

#include <iostream>
#include <random>

using namespace std;

int main() {
   random_device rd;   // 用于获取随机数种子
   mt19937 gen(rd());  // 产生随机数引擎,初始化随机数种子

   uniform_real_distribution<double> dis(0, 1);  // 生成[0, 1)范围内的实型随机数

   // 生成10个随机数
   for(int i=0; i<10; i++){
      cout << dis(gen) << endl;
   }

   return 0;
}

在上述代码中,创建了一个随机数种子random_device,使用该随机数种子初始化随机数引擎mt19937,然后创建std::uniform_real_distribution对象dis,它可以生成[0, 1)范围内的实型随机数,最后使用dis(gen)函数调用来生成10个随机数。

至此,C++生成随机数的实现代码的完整攻略已经讲解完毕。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++生成随机数的实现代码 - Python技术站

(0)
上一篇 2023年5月24日
下一篇 2023年5月24日

相关文章

  • C++ Cmake的构建静态库和动态库详解

    C++ Cmake的构建静态库和动态库详解 什么是静态库和动态库 在C++编程中,常常需要使用一些共用的代码库,这些代码库可以被其他的程序或者模块共享使用。为了方便管理这些代码库,我们通常会将它们打包成静态库或者动态库。静态库是在编译时被链接到程序中,而动态库则是在运行时被链接到程序中。两者的主要区别在于,静态库会被完全复制到编译后的可执行文件中,而动态库则…

    C 2023年5月23日
    00
  • 详解Ubuntu18.04配置VSCode+CMake的C++开发环境

    详解Ubuntu18.04配置VSCode+CMake的C++开发环境 本文将会介绍如何在Ubuntu 18.04配置VSCode和CMake的C++开发环境。以下是具体的步骤: 步骤1:安装必要的软件包 打开终端,使用以下命令来安装必要的软件包: sudo apt-get update sudo apt-get install build-essentia…

    C 2023年5月23日
    00
  • c++动态内存管理与智能指针的相关知识点

    C++动态内存管理与智能指针攻略 知识点介绍 在 C++ 编程中,动态内存管理是非常重要的一部分。当我们需要在程序运行时动态生成对象或者数组,需要使用动态内存。但是,如果我们没有妥善管理动态内存,就会出现内存泄漏等严重问题,使程序出现崩溃等异常情况。 智能指针是 C++ 提供的一种便捷的动态内存管理方式,可以减少我们对内存的手动管理。使用智能指针可以避免内存…

    C 2023年5月22日
    00
  • PHP设计模式概论【概念、分类、原则等】

    PHP设计模式概论 概念 设计模式是指在面向对象编程中用于解决特定问题的重复使用的经验总结。设计模式不是一个可直接转换成代码的解决方案,而是定义了一组通用的原则和规范,它们可以用于设计任何系统。 分类 设计模式可以分为三类:创建型、结构型和行为型。 创建型模式 创建型模式主要用于对象的创建,包括“工厂模式”、“抽象工厂模式”、“单例模式”、“原型模式”、“建…

    C 2023年5月22日
    00
  • java使用FastJson解析Json数据

    当我们需要在Java应用程序中处理JSON数据时,我们可以使用一个轻量级、高效的JSON库——FastJson。FastJson是阿里巴巴公司推出的一款高效的JSON处理工具,它具有易用性、快速性和智能型等特点。本文将详细介绍如何使用FastJson解析JSON数据。 安装和导入FastJson 我们可以通过Maven或手动下载和导入FastJson库。这里…

    C 2023年5月23日
    00
  • sql 分组查询问题

    下面是关于”SQL分组查询问题”的完整攻略。 什么是SQL分组查询 在SQL中,聚合函数(如COUNT、SUM、AVG等)一般都会结合分组查询使用。分组查询将查询结果按照一个或多个列分组,然后在分组上计算聚合函数的值。集合函数只能对每个组返回一个单一的值。 分组查询语法 使用GROUP BY子句进行分组,它只能出现在WHERE子句之后,ORDER BY子句之…

    C 2023年5月22日
    00
  • C++中点操作符和箭头操作符的使用详解

    C++中点操作符和箭头操作符的使用详解 C++中点操作符和箭头操作符是用来访问类成员的重要操作符。在本篇攻略中,我们将详细讲解如何使用这两个操作符。 点操作符 点操作符”.”是用来访问类对象中的成员变量和成员函数的。其语法格式为: Object_name.Member_name; 其中,Object_name是类对象的名称,Member_name是类对象中的…

    C 2023年5月23日
    00
  • C++浅析析构函数的特征

    C++浅析析构函数的特征 在C++中,析构函数是一个类的特殊成员函数。它是在对象被销毁时调用的,用于清理对象的资源。析构函数的特征由以下几个方面组成。 析构函数的命名 析构函数的命名与类名相同,但它在前面加上一个波浪号(~)。例如,如果类名为MyClass,那么析构函数的命名应为~MyClass()。 析构函数的返回类型 析构函数没有返回值,它的返回类型必须…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部