rand() 产生 1 个数字太高?
rand() produces 1 number too high?
据我了解,rand() % a + b
将 return a 和 b 之间的数字,包括 a 和 b。不过,我一定是误解了这一点,因为当我 运行 时,下面的代码 int r
将 return 2、3 或 4。我当然希望它成为 return 2 或 3。我在 main 中调用 srand(time(NULL));
并且我正在使用
#include <time.h>
和 #include <stdlib.h>
我错过了什么吗?
int r = (rand() % 3) + 2;
if (r ==2)
g_fan.draw(r); // skin == 2
else
g_fan.draw(1 + r); //skin == 4
It is my understanding that rand() % a + b
will return numbers between a
and b
including both a
and b
.
没有。它将导致 b
和 (a+b-1)
之间的数字,两者都包括。
rand() % a
的取值范围是 0
和 a-1
,两者都包括。
因此,rand() % a + b
的取值范围是b
和(a-1+b)
,都包括。
要获得介于 a
和 b
之间的随机值,包括两者,请使用:
auto interval = (b-a+1);
auto result = a + rand() % interval;
让 num
成为您通过调用 rand() 获得的任何数字,如果您对 3 执行 %
,则有可能获得这些数字 0、1、2 之一。
因此你得到 2 ,3, 4 :
int r = (rand() % 3) + 2;
int r = (rand() % 3) + 2;
rand() % 3
将 return 0 到 2 之间的数字。当您将 t2 添加到每个数字时,这意味着它将 return 2 到 4。 rand() % a
函数通常 return 是一个从 0 到 a - 1
的值。当您执行 rand() % a + b
时,结果值的范围将从 0 + b
到 a - 1 + b
。
要获得 2 到 3 之间的值,请使用:
int r = (rand() % 2) + 2;
下面的rand()
函数给出了一个从0
到2 - 1
的数字,即1
。当你给每个数字加 2 时,你得到的范围是 0 + 2
,即 2,到 2 - 1 + 2
,即 3。
据我了解,rand() % a + b
将 return a 和 b 之间的数字,包括 a 和 b。不过,我一定是误解了这一点,因为当我 运行 时,下面的代码 int r
将 return 2、3 或 4。我当然希望它成为 return 2 或 3。我在 main 中调用 srand(time(NULL));
并且我正在使用
#include <time.h>
和 #include <stdlib.h>
我错过了什么吗?
int r = (rand() % 3) + 2;
if (r ==2)
g_fan.draw(r); // skin == 2
else
g_fan.draw(1 + r); //skin == 4
It is my understanding that
rand() % a + b
will return numbers betweena
andb
including botha
andb
.
没有。它将导致 b
和 (a+b-1)
之间的数字,两者都包括。
rand() % a
的取值范围是 0
和 a-1
,两者都包括。
因此,rand() % a + b
的取值范围是b
和(a-1+b)
,都包括。
要获得介于 a
和 b
之间的随机值,包括两者,请使用:
auto interval = (b-a+1);
auto result = a + rand() % interval;
让 num
成为您通过调用 rand() 获得的任何数字,如果您对 3 执行 %
,则有可能获得这些数字 0、1、2 之一。
因此你得到 2 ,3, 4 :
int r = (rand() % 3) + 2;
int r = (rand() % 3) + 2;
rand() % 3
将 return 0 到 2 之间的数字。当您将 t2 添加到每个数字时,这意味着它将 return 2 到 4。 rand() % a
函数通常 return 是一个从 0 到 a - 1
的值。当您执行 rand() % a + b
时,结果值的范围将从 0 + b
到 a - 1 + b
。
要获得 2 到 3 之间的值,请使用:
int r = (rand() % 2) + 2;
下面的rand()
函数给出了一个从0
到2 - 1
的数字,即1
。当你给每个数字加 2 时,你得到的范围是 0 + 2
,即 2,到 2 - 1 + 2
,即 3。