为什么 std::uniform_int_distribution<IntType>::operator() 不是常量?
Why is std::uniform_int_distribution<IntType>::operator() not const?
据我了解,当用于拉取随机数时,分布不应该改变。例如,对于均匀分布,它的 min/max 不应该随着我们使用它来生成随机数而改变,那么为什么 operator() 不是 const?
虽然 min()
和 max()
不会改变,但分布可能包含帮助它生成下一个值的状态。如果 operator()
是 const
则在不保证对象是线程安全的情况下无法修改此状态。提供担保可能会很昂贵,而发行版应该是轻量级的。
据我了解,当用于拉取随机数时,分布不应该改变。例如,对于均匀分布,它的 min/max 不应该随着我们使用它来生成随机数而改变,那么为什么 operator() 不是 const?
虽然 min()
和 max()
不会改变,但分布可能包含帮助它生成下一个值的状态。如果 operator()
是 const
则在不保证对象是线程安全的情况下无法修改此状态。提供担保可能会很昂贵,而发行版应该是轻量级的。