在c++中生成范围内均匀分布的随机数

Generating uniformly distributed random numbers within a range in C++

本文关键字:分布 随机数 范围内 c++      更新时间:2023-10-16

我知道有类似的问题。
但我的设置不同。

  • 必须使用rand()
  • 必须使用srand()从用户输入获取种子
  • 仅使用标准库

我不知道是否有可能得到均匀分布的随机数,我是否必须使用random库?

c++标准在涉及rand()srand()等传统函数时主要遵循C标准。

不幸的是,在C标准中没有关于rand()提供均匀分布的。事实上,它在脚注中指出(我的重点):

不能保证产生的随机序列的质量并且已知一些实现产生具有令人苦恼的非随机低阶位的序列。有特殊要求的应用应使用已知足以满足其需求的发电机。

如果你想要你的随机数的特定属性,你真的应该使用<random>中的c++东西(是的,我知道你似乎已经打折了,但你可能不得不做出权衡:要么使用它们,要么不保证特定的分布)。