gpt4 book ai didi

c++ - 为什么 const std::random_device 不可能?

转载 作者:太空狗 更新时间:2023-10-29 23:25:22 26 4
gpt4 key购买 nike

我在问自己为什么

#include <random>
struct A{
std::random_device rd; // or any other generator std::mersenne_twister...

void doStuff() const {
auto v = rd();
}

};

const A a;
a.doStuff();

不起作用,因为 random_device::operator() 不是 const

我想也许随机设备在常量时仍然可以使用,但它不能再次播种,但事实并非如此(内部状态显然在 std::random_device 中不可变)...

我想正确定义类 A(doStuff() 是一个 const 方法),现在我突然需要使用 mutable std::random_device rd; 是有那么丑吗?

这样设计有什么原因吗?

最佳答案

std::randome_device::operator()()是非 const 因为它可能会修改对象的内部状态。 std::random_device 可能是一个伪随机数生成器,它使用内部状态来生成数字。每次生成数字都必须修改内部状态,否则每次都会得到相同的数字。

关于c++ - 为什么 const std::random_device 不可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35116052/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com