c++ - 我可以获得适用于任何数字类型的模板化均匀分布生成器吗?

标签 c++ templates random c++-standard-library

问题说明了一切。我想要这样的东西:

template <typename T> 
void foo() {
    std::cout << "A random number: " << UniformDistribution<T>.get();
}

至少适用于以下类型:数字(整数/ float 、有符号/无符号和实数/复数);枚举; bool 值。我知道 std::uniform_int_distributionstd::uniform_real_distribution - 我想要更通用的模板。

最佳答案

uniform_int_distributionuniform_real_distribution行为不同;前者分布于 [a, b]对于参数 a, b 而后者分布在 [a, b) .此外,默认参数值不同; 0, numeric_limits<>::max()对于前者和 0, 1对于后者。

一旦确定了您感兴趣的行为,就可以自己编写;这样的分布成为标准的一部分是没有意义的。

关于c++ - 我可以获得适用于任何数字类型的模板化均匀分布生成器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20098486/

相关文章:

c++ - array[100] = {0} 如何将整个数组设置为 0?

c++ - 变量声明必须出现在最前面?

c++ - C可以有对象吗?

c - 简单的 "Random Number Guessing Game"/IF ELSE 在 C 中不起作用

c++ - 错误 C2182 : '*' : illegal use of type 'void' c:\boost_1_53_0\boost\smart_ptr\intrusive_ptr. hpp

c++ - 调用仅允许子类作为参数的模板化方法

templates - xslt 条件增量

c++ - C++数据流编程: Interconnecting Nodes With Differing Template Parameters

c - C中的随机迷宫生成器

python - 如何根据自定义概率密度函数(Python)生成随机数?