Предполагая
P(f[x] == 0) = 1/4
P(f[x] == 1) = 3/4
и требует функции g[x]
со следующими допущениями
P(g[x] == 0) = 1/2
P(g[x] == 1) = 1/2
Я считаю, что достаточно следующего определения g[x]
(Mathematica)
g[x_] := If[f[x] + f[x + 1] == 1, 1, 0]
или, альтернативно, в C
int g(int x)
{
return f(x) + f(x+1) == 1
? 1
: 0;
}
Это основано на идее, что вызовы {f[x], f[x+1]}
приведут к следующим результатам
{
{0, 0},
{0, 1},
{1, 0},
{1, 1}
}
Суммируя каждый из полученных нами результатов
{
0,
1,
1,
2
}
, где сумма 1 представляет половину возможных итоговых сумм, а любая другая сумма составляет 1/2.
Edit.
Как говорит БДК - {0,0} менее вероятно, чем {1,1}, потому что
1/4 * 1/4 < 3/4 * 3/4
Однако я запутался, потому что получил следующее определение для f[x]
(Mathematica)
f[x_] := Mod[x, 4] > 0 /. {False -> 0, True -> 1}
или в качестве альтернативы в C
int f(int x)
{
return (x % 4) > 0
? 1
: 0;
}
тогда результаты, полученные при выполнении f[x]
и g[x]
, похоже, имеют ожидаемое распределение.
Table[f[x], {x, 0, 20}]
{0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0}
Table[g[x], {x, 0, 20}]
{1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1}