在至少一个实施标准库,的第一次调用std::uniform_int_distribution<>并不能返回一个随机值,而是分布的最小值.也就是说,给出代码:
default_random_engine engine( any_seed() );
uniform_int_distribution< int > distribution( smaller, larger );
auto x = distribution( engine );
assert( x == smaller );
Run Code Online (Sandbox Code Playgroud)
...... x其实会smaller为任何值any_seed(),smaller或larger.
要在家中玩,您可以尝试在gcc 4.8.1中演示此问题的代码示例.
我相信这是不正确的行为?如果它是正确的行为,为什么随机分布会返回这个明显非随机的值?