小编Aes*_*ope的帖子

uniform_real_distribution不统一

请帮我理解这一点.运行代码段后:

random_device randomEngine;
mt19937 generatorEngine(randomEngine());
uniform_real_distribution<double> unifRandomValue(
                                       numeric_limits<double>::min(), 
                                       numeric_limits<double>::max());

double test[1000];
for (int i{ 0 }; i < 1000; ++i) {
    test[i] = unifRandomValue(generatorEngine);
}
Run Code Online (Sandbox Code Playgroud)

为什么每个生成的值都在该范围内[1.0E306, 1.8E308]?我期待一个随机值从0到0的最大值均匀分布.

提前致谢!


这是一个更完整的例子:

const size_t size{ 1000 };
std::random_device randomEngine;
std::mt19937 generatorEngine(randomEngine());
std::uniform_real_distribution<double> unifRandomValue(
                                std::numeric_limits<double>::min(), 
                                std::numeric_limits<double>::max());

std::array<double, size> test;
for (int i{ 0 }; i < size; ++i) {
    test[i] = unifRandomValue(generatorEngine);
}

auto minMaxIt = std::minmax_element(test.begin(), test.end());

// average without overflow
double average{ 0.0 };
for (int i{ 0 }; i …
Run Code Online (Sandbox Code Playgroud)

c++ random

26
推荐指数
1
解决办法
2443
查看次数

标签 统计

c++ ×1

random ×1