我对 0 和 2 之间的两个整数使用 rand()。看起来第一个整数永远不会是 0,而第二个整数是 2。这是我的测试代码-
#include <iostream>
#include <time.h>
int main()
{
srand(time(NULL));
int number1, number2;
number1 = rand() % 3;
number2 = rand() % 3;
printf("%i, %i", number1, number2);
return 0;
}
Output-25 次尝试
2, 2
2, 2
2, 1
1, 2
0, 1
2, 2
1, 2
1, 0
2, 1
1, 0
0, 0
1, 2
2, 2
0, 0
2, 1
1, 0
2, 2
1, 0
2, 1
1, 0
0, 1
1, 2
1, 0
0, 0
2, 2
如您所见,在 25 次尝试中,组合从来都不是 0、2。这是否表明我应该移至
最佳答案
不,这将发生在所有种子的 9*(1-1/9)^25 = 0.4736,或大约 50% 的时间。也就是说,在您运行程序的大约一半时间里,前 25 个结果中会丢失一些包含 {0,1,2} 中数字的两位数序列。
再次运行它,看看会发生什么。
关于C++,某些组合永远不会出现使用 rand(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26331605/