c++ - 随机函数可以返回的范围是多少?
问题描述
int nextInt(int n) {
return rand() / static_cast<double>(RAND_MAX) * n;
}
我发现有人写了上面的函数(nextInt
),他说nextInt
在[0,n-1]中返回一个随机整数,但我认为nextInt
在[0,n]中返回一个随机整数。我想知道谁是对的,为什么?
解决方案
随机函数可以返回的范围是多少?
标准将其指定为 [0, RAND_MAX](含)。
我想知道谁是对的,为什么?
你是。nextInt 在技术上可以返回 n,但它这样做的机会很小。只有当 rand() 返回 RAND_MAX 时才会发生这种情况(根据评论,在理论情况下 int 的范围不能完全用 double 表示的情况下可能有一些其他接近的值)。
推荐阅读
- java - 日期范围检查的标准生成器
- rust - 有什么作用??生锈吗?
- sql - 使用 NodeJS 应用程序的 Sequelize 函数在 PostgreSQL 中实现两级聚合
- asp.net - 如何正确测量 ASP.NET Core 请求持续时间?
- c# - 如何在 ASP.NET MVC 中通过预加载在 EF6 中包含导航属性的多个导航属性?
- java - Android:仅当我单击网格时才选中复选框?
- amazon-web-services - 如何导出 Scikit learn 模型以在 AWS Sagemaker 中托管(sklearn 模型工件、.pkl 文件或 .tar.gz)
- php - 将 JSON 解析为变量或 MySQL
- python-3.x - Python 3 中的滑动拼图,从哪里开始?
- c++ - 当 C++ 中的 I2C 值更改时收到通知