21xrx.com
2024-06-03 06:32:43 Monday
登录
文章检索 我的文章 写文章
C++如何生成随机浮点数
2023-07-08 16:30:31 深夜i     --     --
C++ 生成 随机 浮点数

在C++编程中,生成随机浮点数这一任务是很常见的,而且它在很多领域都有广泛的应用,比如在金融领域、模拟测试中等。本篇文章将要介绍一些常见的方法来生成随机浮点数。

方法一:使用C++11库提供的随机数生成器

C++11库中提供了更加先进的随机数生成器,比如std::mt19937和std::uniform_real_distribution。我们可以使用以下代码来生成一个指定范围内的随机浮点数:


#include <iostream>

#include <random>

int main()

{

  //使用随机设备引擎生成器

  std::random_device device;

  //使用引擎生成种子

  std::mt19937 generator(device());

  //定义范围

  std::uniform_real_distribution<double> distribution(0.0, 1.0);

  //生成随机数

  double randomNum = distribution(generator);

  std::cout << "Generated random number: " << randomNum << std::endl;

  return 0;

}

以上代码使用了std::mt19937,它是一个高质量的随机数生成器,而std::uniform_real_distribution 则是一个生成指定范围内的随机实数分布的工具。我们可以使用随机设备引擎生成器来生成随机种子,以确保生成器得到的随机数序列是随机的。

方法二:使用rand函数

另一种获取随机浮点数的方法是使用rand函数,标准库提供了一个rand函数来生成随机数,但是它生成的是一个整数,需要经过一些变换才能得到浮点数。以下代码是基于rand函数来获取一个指定范围内的浮点数:


#include <iostream>

#include <ctime>

int main()

{

  //使用当前时间作为随机种子

  srand(time(nullptr));

  //定义范围

  double lowerbound = 0.0;

  double upperbound = 1.0;

  //生成随机数

  double random = lowerbound + static_cast<double>(rand()) / RAND_MAX * (upperbound - lowerbound);

  std::cout << "Generated random number: " << random << std::endl;

  return 0;

}

这种方法比较简单,但是随机性不够高,需要在实际应用中慎用。

总结:

上述两种方法都可以用来生成随机浮点数,前者比后者效果好,因此频繁使用。在实际应用中,我们需权衡随机性、效率等因素,选择适合自己项目的方案。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复