C++ 是<;随机>;c+中的库+;11便携式?

C++ 是<;随机>;c+中的库+;11便携式?,c++,random,c++11,C++,Random,C++11,c++11中的库是否可移植?我避免使用rand(),因为我听说它不可移植。如何定义“可移植” 如果说“可移植”,你的意思是“在相同的输入下将产生二进制相同的随机数序列”,那么是的,rand是不可移植的。是的,它们是可移植的(大多数不是std::default\u random\u engine或),因为它们实现了特定的算法rand可以是任何东西,只要它不完全像随机数生成器 尽管如此,正如@PeteBecker所指出的,分布本身并没有那么明确的定义。因此,虽然std::mt19937将为给定的种子

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

如何定义“可移植”

如果说“可移植”,你的意思是“在相同的输入下将产生二进制相同的随机数序列”,那么是的,
rand
是不可移植的。是的,它们是可移植的(大多数不是std::default\u random\u engine或),因为它们实现了特定的算法
rand
可以是任何东西,只要它不完全像随机数生成器

尽管如此,正如@PeteBecker所指出的,分布本身并没有那么明确的定义。因此,虽然std::mt19937将为给定的种子生成相同的值序列,但不同的s可以为相同的输入序列和范围提供不同的值


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

中描述的随机数引擎对其算法有明确的要求,以确保可移植性。这些分布并不相同。

例如,您可以生成“给定相同输入的相同随机数序列”(来自@Nicol Bolas)。你肯定不能用
rand()
这样做,这很烦人

相关问题:


是的,这就是我所说的“便携式”的含义。你可以找到分布在定义中的实现的原理。你有这个参考吗?C++标准是这个的参考。