c ++ 11中的<random>库是可移植的吗?

Xav*_*ier 8 c++ random c++11

c ++ 11中的库是可移植的吗?我避免使用rand(),因为我听说它不便携.

Nic*_*las 18

你如何定义"便携式"?

如果通过"便携式",你的意思是"将在给定相同输入的情况下产生二进制相同的随机数序列",那么是,rand不可移植.是的,C++随机生成器是可移植的(大多数是.std::default_random_engine或者不是std::random_device),因为它们实现了特定的算法.rand允许是任何东西,只要它不是一个随机数发生器.

话虽如此,正如@PeteBecker指出的那样,分布本身并没有那么明确.因此,虽然std::mt19937将为给定种子生成相同的值序列,但是不同的std::uniform_int_distributions可以为相同的输入序列和范围给出不同的值.

当然,如果您需要一致性,您可以随时定义自己的分布.

  • 是的,这就是我所说的便携式. (3认同)

Pet*_*ker 6

所描述的随机数引擎<random>对其算法有明确的要求以确保可移植性.分发没有.