据我理解,当用于生成随机数时,分布应该保持不变。例如,对于均匀分布,其最小值/最大值在生成随机数时不应更改。那么为什么operator()不是const的呢?
据我理解,当用于生成随机数时,分布应该保持不变。例如,对于均匀分布,其最小值/最大值在生成随机数时不应更改。那么为什么operator()不是const的呢?
min()
和max()
不会改变,但分布可能包含帮助生成下一个值的状态。如果operator()
是const
,那么没有修改此状态的方法而又需要保证对象线程安全,这将是昂贵的。提供这种保证可能会很耗费资源,而分布被设计为轻量级。
const
确实很方便。 - Marc Glisse
mutable
。 - Marc Glisseuniform_int_distribution
头文件,没有找到关于它保持状态的任何信息,重置实现为void reset() { }
。我唯一发现它多次调用PRNG的情况是如果需要进行上下缩放 - 但那里有太多下划线,让我感到头疼,所以我可能错过了一些内容。 - Ted Lyngmo