1 c++
int number_generator(bool new_id)
{
if (new_id)
{
srand(time(NULL));
int x = 99999 + (rand() % 999999);
return x;
}
else
{
throw std::runtime_error("Oops! something went wrong");
}
}
Run Code Online (Sandbox Code Playgroud)
给定一个真参数,此函数生成一个随机的 6 位数字。我已经编译了很多次,它生成的数字总是以“1”开头。我究竟做错了什么?
rand()返回一个介于 0 和 之间的数字RAND_MAX。后者可以低至 32767。C++ 只需要RAND_MAX至少这么大。C++ 实现可以使用更大的值,但这不是标准规定的。
有可能(甚至可能)您的实现选择了 的最小允许值RAND_MAX,即 32767。如果是这种情况,您的计算值99999 + (rand() % 999999)等于99999 + rand(),因此它位于99999和之间99999 + 32767。这将始终以数字开头,1除非不太可能的情况rand()为零,导致结果为99999。
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |