我正在尝试跳过列表插入,所以我使用rand()来确定级别我知道我需要做连续的硬币翻转,所以我想如果我为生成器打印测试计数,它应该有大约50%减少每个连续的水平。我不知怎么搞砸了逻辑,但我没能理解我的错误在最后一级,它是~==到它之前的水平,而不是一半。
这是我的代码:
#define MAXLEVEL 5
srand(time(NULL));
int newLevel;
int a[6] = {0};
for (int i = 0; i < 100000; i++) {
for (newLevel = 0; (rand() < RAND_MAX/2) && (newLevel < MAXLEVEL); newLevel++);
a[newLevel]++;
}
printf("0: %d 1: %d 2: %d 3: %d 4: %d 5: %d\n", a[0], a[1], a[2], a[3], a[4], a[5]);
结果如下:
0: 50018 1: 24969 2: 12532 3: 6334 4: 3094 5: 3053
我有点期待我的错误是愚蠢的,但我已经看了一段时间,似乎无法抓住它。
最佳答案:
iiNii