Alexandre SALMON
Intuitivement, j’ai tendance à penser que M sous-estime la valeur réelle de a. Le maximum des X1 sera au mieux égal à 1 et souvent inférieur, sous-estimant la valeur réelle de a.
La moyenne de M dans vers a quand n grandi. Ce qui est logique car plus n est grands plus il est probable qu’un Xi soit proche de a.
Sa variance, elle, réduit avec n qui grandit.
a = sample(1:100, 1)
n = 10
m = max(sample(1:a, n, T))
Em = c();
a = 100
for (i in 1:50)
Em[i] = mean(replicate(100, max(sample(1:a, i, T))))
plot(Em, type='l')
Vm = c();
for (i in 1:50)
Vm[i] = var(replicate(100, max(sample(1:a, i, T))))
plot(Vm, type='l')
Cet estimateur M’ me semble plus interessant que M car son espérence est de a. On sait que X est réparti uniformément sur [0;a], donc E(X) = a/2 et 2*E(X) = a. Cependant sa précision varie en fonction de n: un grand n permettra une meilleure précision.
a = sample(1:1000, 1)
n = 10
m = 2*mean(sample(1:a, n, T))
Em = c();
a = 100
for (i in 1:200)
Em[i] = mean(replicate(100, 2 * mean(sample(1:a, i, T))))
plot(Em, type='l')
Vm = c();
for (i in 1:200)
Vm[i] = var(replicate(100, 2 * mean(sample(1:a, i, T))))
plot(Vm, type='l')
L’intuition de Bob me semble plutot juste, cependant 1,1 n’est sans doute pas le meilleur facteur, l’idéal serait d’avoir un facteur variant en fonction de n comme par exemple 1 + 1/n. On sait que plus n est grand, plus M est proche de A, ce facteur 1,1 qui pour un n faible permet de jouer la sécurité devient un paris risqué pour un n plus grand.
a = runif(1, 0, 1)
n = 10
m = max(runif(n, 0, a))
rm = 1.1 * m
gain = function(rm, a) {
if (rm > a) {
g = 0
} else {
g = rm - m
}
return(g)
}
gain(rm, a)
## [1] 0
a = 1
n = 10
mean(replicate(1000, gain(1.1 * max(runif(n, 0, a)), a)))
## [1] 0.1988936
A priori je dirai qu’il a une probabilité de 0.5 d’avoir raison.
On peut applique la stratégie quivante: répondre oui seulement si la valeur donnée est supérieure à 0,5. Ce qui pour des valeurs a1 = 0,4 et a2 = 0,6 assure la victoire.
Avec a1 et a2 tirs unifomréments sur 0, 1 on obtient on probabilité de victoire de 0,75
getA = function() {
return (sort(c(runif(1, 0, 1), runif(1, 0, 1))))
}
guess = function(a) {
return (a > 0.5)
}
pick = function(a) {
return (a[sample(1:2, 1, FALSE)])
}
simulate = function() {
A = getA()
a = pick(A)
g = guess(a)
if (g) {
return (a == A[2])
} else {
return (a != A[2])
}
}
mean(replicate(10000, simulate()))
## [1] 0.7544