数学期望
例题单选错位
大家可以先看完题目描述。
我们可以先从数学期望的定义下手,假设有一个随机数x,它的取值范围是一到十,那么对于一个可能xi,它的期望是xi*10,也就是他本身的值乘概率,1~10的期望加起来就是x的期望。
那么我们可以献上代码,再解释
#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
#define N 10000011
#define ll long long
using namespace std;
ll n, A, B, C, a[N];
double f[N], num, v = 1, ans = 0;
int main() {
scanf("%d%d%d%d%d", &n, &A, &B, &C, a + 1);
for (int i = 2; i <= n; i++) a[i] = ((long long)a[i - 1] * A + B) % 100000001;
for (int i = 1; i <= n; i++) a[i] = a[i] % C + 1;
a[n + 1] = a[1];
for (int i = 1; i <= n; i++) {
num = min(a[i], a[i + 1]);
ans += num * (v / a[i]) * (v / a[i + 1]);
}
printf("%.3f", ans);
return 0;
}
你们可以看到最关键的就是为什么要在两个相邻的选项数之间取较小值,因为我们可以这样考虑,我们要的是选项正确的概率值,而且题目中说的选项都是“一样的“,什么2就是AB,3就是ABC,反正意思就是这样,那么从这里考虑,两个题之间的较小值才有可能成为下一道题的概率中,就比如说会上面的那个例子,如果你前面有ABC三个选项,而后面只有AB两个选项,那么C会是下一个题目的正确答案吗?,显然不是。这样说来,其实到下一个语句的时候,有一项会被约为一,但意义上是,假设了上一道题他选对了,下一道题也是此选项的概率,然后再把它们加起来,就是这张试卷做对题目的期望值。