📜  random floar c++ (1)

📅  最后修改于: 2023-12-03 15:34:37.332000             🧑  作者: Mango

随机浮点数生成器 in C++

简介

随机浮点数生成器是一段用于生成指定范围内随机浮点数的程序。它需要用到C++中的随机数生成器。本文将向你介绍如何使用C++ 11中的相应库函数生成随机浮点数,及其一些常见的应用场景。

使用方法

在C++ 11中,引入了random库,其中包括了各种随机数生成器。下面是一个简单的使用方法,生成一个指定范围内的随机浮点数。

// 随机数生成器
std::default_random_engine generator(time(0));
// 定义分布区间为[0,1]的均匀分布
std::uniform_real_distribution<double> distribution(0.0, 1.0);

// 生成随机数
double random_float = distribution(generator);

这个程序首先创建了一个随机数生成器对象generator,并用当前时间做种子,以确保每次运行程序都会生成不同的序列。然后定义了分布在[0, 1]之间的随机浮点数分布,最后生成一个随机浮点数并赋值给random_float

如果需要生成其他范围内的随机浮点数,只需要调整distribution对象的参数即可。

应用场景
1. 模拟游戏场景

在电脑游戏中,不少场景的效果(比如天气、潮汐等)都需要模拟一定的随机性来增强其真实感。在这种情况下,使用随机浮点数就可以实现各种需要随机性的效果。

以下是一个简单的C++代码,模拟了一片海域的潮汐变化。

std::default_random_engine generator(time(0));
std::uniform_real_distribution<double> distribution(0.0, 1.0);

for (int i = 0; i < 24; i++) {
    double tide = distribution(generator);
    if (tide < 0.3) {
        std::cout << i << " o'clock: low tide\n";
    } else if (tide >= 0.3 && tide < 0.7) {
        std::cout << i << " o'clock: medium tide\n";
    } else {
        std::cout << i << " o'clock: high tide\n";
    }
}

这个程序通过生成每一个小时内的随机浮点数,来决定这个时段海潮的状态(低、中、高潮)。

2. 数据加噪

在一些数据挖掘场景下,需要在一定范围内增加数据的随机噪音,以增强训练模型的鲁棒性。在这种情况下,可以用随机浮点数来生成噪声数据。

以下是一个C++函数,将输入的数据矩阵加上随机噪声。

#include <vector>
#include <algorithm>

void add_random_noise(std::vector<std::vector<double>>& data, double noise_scale) {
    std::default_random_engine generator(time(0));
    std::normal_distribution<double> distribution(0.0, noise_scale);

    for (auto& row : data) {
        std::transform(row.begin(), row.end(), row.begin(), [&](double x) { 
            return x + distribution(generator); 
        });
    }
}

这个函数首先创建了一个具有0均值和指定方差的正态分布,然后使用该随机分布生成与输入矩阵大小相同的噪声矩阵,最后将原始矩阵与噪声矩阵相加,得到加了噪声的数据矩阵。

总结

在本文中,我们使用C++ 11中的random库给出了生成随机浮点数的示例代码,并介绍了其在游戏场景模拟和数据加噪中的应用。如果你需要在C++中生成随机浮点数,不妨试一试本文中的示例代码。