他还说了如果在70和80如果抽到a卡 则直接降为2%
时间: 2024-02-19 08:59:29 浏览: 12
非常抱歉,我理解错误了您的问题。以下是更新后的代码,加入了如果在70和80次抽卡中抽到了A卡,则概率直接回到2%的逻辑:
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
int i, a_count = 0, total_count = 0;
float a_prob = 0.02; // 初始A卡概率为2%
srand(time(NULL)); // 初始化随机数生成器
for (i = 1; i <= 80; i++) {
float r = (float)rand() / RAND_MAX; // 生成0-1之间的随机数
total_count++;
if (r <= a_prob) {
printf("第%d次抽卡,抽到了A卡!\n", i);
a_count++;
a_prob = 0.02; // 如果抽到了A卡,概率立即回到2%
if (i >= 70) {
a_prob = 0.02; // 如果在70-80次抽卡中抽到了A卡,则概率回到2%
}
} else {
printf("第%d次抽卡,抽到了B卡。\n", i);
if (i <= 50) {
a_prob = 0.02; // 前50次每次抽出A卡概率为2%
} else if (i <= 61) {
a_prob += 0.02; // 第51-61抽次时,每次抽到A卡概率依次上升2%
} else if (i <= 70) {
a_prob += 0.03; // 第61-70抽次时,每次抽到A卡概率依次上升3%
} else {
a_prob += 0.05; // 第71-80抽次时,每次抽到A卡概率依次上升5%
}
}
}
printf("共抽了%d次,其中%d次抽到了A卡,概率为%.2f%%。\n", total_count, a_count, (float)a_count / total_count * 100);
return 0;
}
```
希望能够对您有所帮助。