gpt4 book ai didi

c++ - 生成开区间均匀随机数

转载 作者:行者123 更新时间:2023-11-28 07:17:56 26 4
gpt4 key购买 nike

我找不到在像 (0,1) 这样的开区间内从均匀分布生成随机数的方法。

(double)rand()/RAND_MAX;

这会包括 0 和 1 吗?如果是,开区间内生成随机数的正确方法是什么?

最佳答案

看看std::uniform_real_distribution !您可以使用比内置的 <cstdlib> 更专业的伪随机数生成器。称为 std::rand()。这是一个代码示例,它打印出 [0,1] 范围内的 10 个随机数:

#include <iostream>
#include <random>

int main()
{
std::default_random_engine generator;
std::uniform_real_distribution<double> distribution(0.0,1.0);

for (int i=0; i<10; ++i)
std::cout << distribution(generator) << endl;

return 0;
}

完全为零的可能性很小。如果不得到 0 对你来说很重要,你可以检查它并生成另一个数字。

当然你也可以使用指定的随机数引擎,如std::mt19937 (这是“非常”随机的)或最快的之一,std::knuth_b .

关于c++ - 生成开区间均匀随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19933419/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com