21xrx.com
2024-12-27 16:03:33 Friday
登录
文章检索 我的文章 写文章
如何在C++中生成指定范围内的随机数?
2023-07-10 14:35:09 深夜i     --     --
C++ 生成 指定范围 随机数

在C++中生成随机数可以使用标准库中的rand()函数,但是rand()函数只能生成0到RAND_MAX之间的随机整数。如果需要生成指定范围内的随机数,可以使用以下方法:

1. 将生成的随机数缩放到指定范围内

可以使用以下公式将0到RAND_MAX之间的随机整数转换为指定范围内的随机数:random_number = (rand() / (double) RAND_MAX) * (max_value - min_value) + min_value;

其中,max_value和min_value分别为指定范围的最大值和最小值,(rand() / (double) RAND_MAX)是将0到RAND_MAX之间的随机整数缩放到0到1之间的浮点数。

2. 使用C++11中的随机数库

C++11引入了新的随机数库,包括uniform_int_distribution和mt19937等类,可以生成指定范围内的随机整数。示例代码如下:


#include <iostream>

#include <random>

int main()

{

  int min_value = 1;

  int max_value = 100;

  std::random_device rd;

  std::mt19937 gen(rd());

  std::uniform_int_distribution<> dis(min_value, max_value);

  for (int i = 0; i < 10; ++i) {

    std::cout << dis(gen) << ' ';

  }

  std::cout << std::endl;

  return 0;

}

以上代码使用mt19937生成器和uniform_int_distribution类生成指定范围内的随机整数。其中,random_device用于生成种子,mt19937用于生成随机数序列,uniform_int_distribution类用于指定随机数范围,dis(gen)调用生成器和分布函数生成随机数。

以上两种方法均可用于生成指定范围内的随机数,选择哪种方法视个人情况而定。需要注意的是,在使用rand()函数时需要调用srand()函数设置种子,否则每次生成的随机数序列都相同。

  
  

评论区

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