Bonjour à tous,
Le titre est une private joke pour GBZM mais l'exercice n'est pas du tout évident et en tout cas je n'ai pas tous les éléments de réponses.
Dans une urne, on sait qu'il y a exactement boules vertes et boules rouge. On va pouvoir effectuer des tirages sans remise à l'aveugle donc on peut considérer que chaque boule encore dans l'urne a autant de chance d'être choisie.
On gagne 1 euro si on tire une boule verte et on perd 1 euro si on tire une boule rouge. On peut arrêter de tirer des boules quand on veut ou continuer jusqu'à vider l'urne.
Quelle sera votre stratégie préférée et quelle sera l'espérance de gain correspondant ? Il est formellement interdit de regarder dans l'urne, de repeindre les boules... enfin de tricher !
Ca dépend de mes finances !
Si j'ai absolument besoin de 10€, pour rembourser un mafieux à qui je dois ces 10€, je vais tenter la chance, et jouer jusqu'à gagner10€, ou mourir.
Sinon, dans des circonstances normales, dès que je suis positif (+1€), j'ai intérêt à m'arrêter.
Il y a pourtant moyen d'avoir une espérance positive!
Par exemple pour n=1000, on a une espérance d'environ 13.5 avec la stratégie: je m'arrête quand j'ai gagné 22.
Voici la courbe de l'espérance de gain pour la startégie "je m'arrête quand j'ai atteint x" avec x en abscisse:
Merci de votre participation et bien joué LittleFox
On commence à trouver des résultats intéressants sur l'espérance.
On peut donc se demander quel seuil d'arrêt choisir en fonction de n pour maximiser l'espérance ? Je suis d'accord pour n=1000 choisir 22 me parait cohérent.
On peut aussi se demander s'il n'y a pas encore une stratégie meilleure ? On ne tient pas compte des boules restantes dans cette stratégie et on sent bien que c'est dommage si on veut vraiment optimiser.
On peut calculer l'espérance maximale pour v boules vertes et r boules rouges de la façon suivante:
Dans le cas où E(v, r) est égal à r-v, il faut s'arrêter. Sinon, il faut jouer.
E(v, r) se calcule facilement dans un tableau.
Je ne sais pas si on peut en sortir une règle sans devoir calculer tout le tableau.
E(100,100) est plus grand que 5.19 > 0-0, on a donc tout intérêt à jouer
Avec cette stratégie, j'ai une espérance d'environ 16.49 pour n = 1000. Ce qui est mieux que la stratégie "je m'arrête à 22" (~13.5).
Mais j'ai dû calculer un million de valeurs.
Alors là vraiment bravo LittleFox ! Tu sais faire travailler ton ordinateur, il n'y a pas à dire. Meilleure stratégie possible
Je n'arrive pas non plus à exprimer l'espérance en fonction de n donc je ne sais pas à quoi ça va ressembler lorsque n tend vers l'infini
Par contre pour ta stratégie précédente (choisir le meilleur seuil qu'on doit atteindre pour s'arrêter), on devrait pouvoir se débrouiller avec le principe de réflexion mais malheureusement ce ne sera pas optimal comme tu viens de le montrer.
J'ai fais un petit programme pour aller plus loin.
D'abord un changement de variable: et de sorte que:
Ainsi on peut calculer à partir de libérant de la mémoire et permettant d'utiliser numpy.
Voici le code:
from matplotlib import pyplot
import numpy
def main(max_n=1001):
e = numpy.full(1, 0.)
middle = [0]
factor = []
for n in range(1, max_n):
e_ = numpy.full(n+1, 0.)
e_[n] = n
e_[0] = 0
d = numpy.linspace(-n, n, n+1)
e_[1:-1] = numpy.maximum((e[1:]*(n-d[1:-1]) + e[:-1]*(n+d[1:-1])) / (2*n), d[1:-1])
e = e_
pyplot.plot(d/n, e/n, '-')
if n % 2 == 0:
middle.append(e[n//2])
factor.append(e[n//2]**2/(n/2))
print(middle[-1])
pyplot.show()
# Trying to analyze E_N(d)
d = numpy.linspace(-1, 1, len(e))
pyplot.plot(d, e/(max_n-1))
pyplot.show()
middle = numpy.array(middle)
pyplot.plot(middle)
pyplot.show()
ns = numpy.arange((max_n+1)//2)
pyplot.plot(ns[1:], factor)
pyplot.show()
pyplot.plot(ns, middle**2/factor[-1] - ns)
pyplot.show()
if __name__ == "__main__":
main()
Pas la moindre idée mais je trouve super intéressant de visualiser ce qui se passe. Merci LittleFox de l'avoir mis en évidence.
Petit bonus, j'arrive à comprendre ton code, je vais finir par prendre de bonnes habitudes grâce à toi à force
Bonjour,
Je n'ai pas participé mais j'admire le travail de Littlefox en plus
de son job que j'espère passionnant pour lui
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :