C++随机引擎不是真正随机的

标签 c++ c++11 random

我正在玩一些 C++ 随机引擎,有些事情让我很不安。 注意到我所拥有的值大致具有相同的顺序,我进行了以下测试:

#include <random>
#include <functional>
#include <iostream>

int main()
{
    auto res = std::random_device()();
    std::ranlux24 generator(res);
    std::uniform_int_distribution<uint32_t> distribution;
    auto roll = std::bind(distribution, generator);


    for(int j = 0; j < 30; ++j)
    { 
        double ssum = 0;
        for(int i = 0; i< 300; ++i)
        {
            ssum += std::log10(roll());
        }
        std::cout << ssum / 300. << std::endl;
    }
    return 0;
}

无论我使用什么引擎,我打印的值都在 9.2 左右,看起来更像是正态分布。 有什么我没有正确理解的吗? 谢谢, 纪尧姆

最佳答案

Having noticed that the values I had were roughly of the same order

这正是您对统一随机数生成器的期望。 [10^(n-1),10^n) 范围内的整数是 [0,10^(n-1)) 范围内整数的 9 倍。

关于C++随机引擎不是真正随机的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38205724/

相关文章:

c++ - 如何在 UnrealEngine 中对非 2 的幂纹理进行下采样?

c++ - 带有 char[] 的 cin/cout

c# - 如何为 C# 应用程序开发 C++ 插件?

c++ - 在 C++ 11 中创建动态二维矩阵的好方法

matlab - 你如何生成一个只有 -1 和 1 的随机序列?

c++ - 基本加密程序无法正确读取文件

c++ - 模板中的错误 std::bad_array_new_length

c++ - 共享指针析构函数中的内存顺序

linux - random() 在 Linux 中函数相同的值(同时 grof ing)

javascript - 如何让数组选择四种不同的选项