为什么std :: uniform_int_distribution :: operator()不是const?

问题描述 投票:7回答:1

据我所知,当用于提取随机数时,分布不应更改。例如,对于均匀分布,当我们使用它生成随机数时,其最小值/最大值不应更改,那么为什么operator()不是const?

c++ random const c++-standard-library
1个回答
7
投票

虽然min()max()不会更改,但分布可能包含有助于其生成下一个值的状态。如果operator()const,则必须确保对象是线程安全的,否则无法修改此状态。提供这种保证可能是昂贵的,并且发行意味着重量轻。


0
投票

分发对象是伪随机数生成器。对象的状态绝对会随着生成的每个随机数而改变。两个连续的调用可能会给出不同的值,并且之所以存在差异,是因为每个调用都会改变对象的状态。

© www.soinside.com 2019 - 2024. All rights reserved.