首页 > 后端开发 > C++ > 如何在 C 中生成特定范围内的均匀分布随机数?

如何在 C 中生成特定范围内的均匀分布随机数?

Patricia Arquette
发布: 2024-12-24 11:06:18
原创
168 人浏览过

How Can I Generate Uniformly Distributed Random Numbers Within a Specific Range in C  ?

跨范围均匀生成随机数

您寻求一种在指定范围 [min, max] 内均匀生成随机数的方法。

rand 的缺陷

您当前使用 rand() 和模运算符可能无法确保均匀分布,因为它的行为取决于 RAND_MAX 和范围本身。

C 11 和统一范围生成

在 C 11 中,std:: Uniform_int_distribution 提供了专门针对此问题的解决方案需要:

#include <random>

std::uniform_int_distribution<int> distr(min, max);
std::random_device rand_dev;
std::mt19937 generator(rand_dev());

int random_number = distr(generator);
登录后复制

的附加功能

header 提供了大量具有不同分布的随机数生成器,例如伯努利分布、泊松分布和正态分布。

容器洗牌

要洗牌容器,请使用std::shuffle:

#include <random>
#include <vector>

std::vector<int> vec = {4, 8, 15, 16, 23, 42};
std::random_device random_dev;
std::mt19937 generator(random_dev());

std::shuffle(vec.begin(), vec.end(), generator);
登录后复制

Boost.Random

如果使用 C 11 编译器不可行,请考虑 Boost.Random,它具有与C 11 对应物。

以上是如何在 C 中生成特定范围内的均匀分布随机数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板