C++中的随机数生成器——random详细解析

一、c++ random函数

c++中提供的random库是一个伪随机数生成器。伪随机数是指,虽然不是真正随机生成的,但是具有随机数的特征。random库中包含两个主要的类:

    1. std::linear_congruential_engine:线性同余发生器,该发生器可以生成最简单、最频繁的伪随机数。具体实现方式是通过给定一个公式,生成下一次的随机数。
    2. std::mersenne_twister_engine: 梅森旋转发生器,其生成的伪随机数与线性同余发生器相比具有更高的随机性和更长的周期。(梅森旋转发生器曾在Mersenne Prime搜索中使用)

这两个类都是模板类,需要通过参数指定随机数的类型。

二、c++ random.value取值范围

random类中的生成的随机数取值范围是在闭区间[0, max()]之间的整数,其中,max()是随机数生成器可以生成的最大值。对于大多数情况下,实现中的最大值都是固定的。

三、c++ random头文件

使用c++ random库,需要引入头文件random。

#include <random>

四、c++ random浮点数

如果需要生成外部取值范围的随机数,需要进行一定的格式化和类型转换。有两种方式:

    1. (double)rand() / RAND_MAX
    2. uniform_real_distribution函数

uniform_real_distribution有两个参数,一个是均匀分布的起始值,一个时结束值。

    std::default_random_engine rand_gen;
    std::uniform_real_distribution<double> value(-10.0 , 10.0);
    double a = value(rand_gen);

五、c++ random函数用法

以下是一个示例程序,演示了c++ random库的基本用法:

#include <iostream>
#include <random>
using namespace std;
int main()
{
    std::default_random_engine rand_gen;
    std::uniform_int_distribution<> distrib(0, 10);
    for (int i = 0; i < 10; ++i) {
         cout << distrib(rand_gen) << " ";
    }
    cout << endl;
    return 0;
}

六、c++ random函数限制范围

c++ random的生成随机数的范围是可以通过指定相应的分布函数来实现,比如:
uniform_int_distribution 生成整数分布(下面的代码生成1到10的整数分布);
uniform_real_distribution生成实数分布。

    std::default_random_engine rand_gen;
    std::uniform_int_distribution<int> distrib(1, 10);
    for (int i = 0; i < 10; ++i) {
         cout << distrib(rand_gen) << " ";
    }
    cout << endl;

七、c++ random的用法

c++ random库还包含了很多其他的随机分布函数,例如binomial_distribution、normal_distribution等等,可以根据实际需要选择对应的函数使用。

以下是使用normal_distribution生成正态分布的示例代码:

    std::default_random_engine rand_gen;
    std::normal_distribution<double> distrib(0.0 , 2.0);
    for (int i = 0; i < 10; ++i) {
         cout << distrib(rand_gen) << " ";
    }
    cout << endl;

八、c++ randomize函数

c++ randomize函数是一个初始化函数,用于获取更长的随机序列。使用方式如下示例:

    std::random_device rd;
    std::default_random_engine rand_gen(rd());
    std::uniform_int_distribution<int> distrib(1, 10);
    for (int i = 0; i < 10; ++i) {
         cout << distrib(rand_gen) << " ";
    }
    cout << endl;

九、c++ random不能使用/无法使用

需要注意,random库里面的所有函数,不要用在要求高精度随机数的地方,因为这些函数都是伪随机数而不是真正随机数。在数据加密和密钥生成时,更应该使用更强的随机数生成器,例如sodium库中的随机数函数。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/248193.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝的头像小蓝
上一篇 2024-12-12 13:25
下一篇 2024-12-12 13:25

相关推荐

  • 打造照片漫画生成器的完整指南

    本文将分享如何使用Python编写一个简单的照片漫画生成器,本文所提到的所有代码和技术都适用于初学者。 一、环境准备 在开始编写代码之前,我们需要准备一些必要的环境。 首先,需要安…

    编程 2025-04-29
  • Python生成随机数的应用和实例

    本文将向您介绍如何使用Python生成50个60到100之间的随机数,并将列举使用随机数的几个实际应用场景。 一、生成随机数的代码示例 import random # 生成50个6…

    编程 2025-04-29
  • 如何使用random生成不重复的随机数

    在编程开发中,我们经常需要使用随机数来模拟一些场景或生成一些数据。但是如果随机数重复,就会造成数据的不准确性。这时我们就需要使用random库来生成不重复且随机的数值。下面将从几个…

    编程 2025-04-29
  • 如何使用Python导入Random库

    Python是一门优秀的编程语言,它拥有丰富的第三方库和模块。其中,Random库可谓是最常用的库之一,它提供了用于生成随机数的功能。对于开发人员而言,使用Random库能够提高开…

    编程 2025-04-29
  • Python生成随机数的多种方法

    本文将从以下几个方面详细介绍如何使用Python生成随机数。 一、random模块的使用 Python内置的random模块能够生成伪随机数,使用该模块,可以生成随机数、随机整数等…

    编程 2025-04-29
  • Python随机数生成器

    Python随机数生成器是一个常用的工具,它可以生成各种类型的随机数,包括整数、浮点数和字符串等,广泛用于模拟、游戏、加密、测试等多个领域。本文将从多个方面对Python随机数生成…

    编程 2025-04-28
  • Python随机函数random的使用指南

    本文将从多个方面对Python随机函数random做详细阐述,帮助读者更好地了解和使用该函数。 一、生成随机数 random函数生成随机数是其最常见的用法。通过在调用random函…

    编程 2025-04-27
  • Python生成1~100随机数(代码示例)

    本文将详细阐述Python生成1~100随机数,包括其定义、应用场景、实现方法等,帮助读者更好的掌握该技能。 一、定义 随机数是指在一定范围内任选的数值,能够在一定程度上保证数据的…

    编程 2025-04-27
  • 使用词云图生成器网站,让文字更美丽

    词云图是一种非常实用的工具,通过它可以直观地展示出文字内容的重点。而作为一个全能编程开发工程师,你一定需要掌握一些生成词云图的技巧。这篇文章将从多个方面详细阐述使用词云图生成器网站…

    编程 2025-04-27
  • 如何使用Python生成不重复的随机数?

    要在Python中生成不重复的随机数,我们可以使用random模块中的sample函数,该函数可以从指定序列中随机选择指定数量的独立元素。 一、生成指定范围的随机数 如果要生成指定…

    编程 2025-04-27

发表回复

登录后才能评论