Nous pouvons résoudre ce problème via quelques "astuces" et un peu de mathématiques.
Voici l'algorithme de base:
- Générer une variable aléatoire géométrique avec probabilité de succès .p
- Le résultat de cette variable aléatoire détermine une valeur connue fixe .fn∈[0,1]
- Générez une variable aléatoire utilisant des retournements de pièces justes générés à partir de retournements appariés par blocs de notre pièce .B e r ( p )Ber(fn)Ber(p)
- Le résultat résultant sera pour tout , ce qui est tout ce dont nous avons besoin.a ∈ ( 0 , 1 )Ber(pa)a∈(0,1)
Pour rendre les choses plus digestes, nous allons les diviser en morceaux.
Pièce 1 : Sans perte de généralité, supposons que .0<a<1
Si , alors, nous pouvons écrire pour un entier positif et un . Mais, pour deux Bernoulli indépendants, nous avons
Nous pouvons générer un Bernoulli à partir de notre pièce de manière évidente. Par conséquent, nous n'avons qu'à nous préoccuper de générer le quand .p a = p n p b n 0 ≤ b < 1 P ( X 1 = X 2 = 1 ) = p 1 p 2a≥1pa=pnpbn0≤b<1p n B e r ( p a ) a ∈ ( 0 , 1 )
P(X1=X2=1)=p1p2.
pnBer(pa)a∈(0,1)
Pièce 2 : Savoir comment générer un arbitraire à partir de tours de pièces justes.Ber(q)
Il existe une manière standard de procéder. Développez dans son expansion binaire, puis utilisez nos équitables pour "faire correspondre" les chiffres de . La première correspondance détermine si nous déclarons un succès ("têtes") ou un échec ("queues"). Si et que notre lancer de monnaie est des têtes, déclarer des têtes, si et notre lancer de pièce est des queues, déclarer des queues. Sinon, considérez le chiffre suivant par rapport à un nouveau lancer de pièce.q q n = 1 q n = 0q=0.q1q2q3…qqn=1qn=0
Pièce 3 : Savoir comment générer un lancer de pièce équitable à partir de pièces injustes avec un biais inconnu.
Cela se fait, en supposant , en retournant la pièce par paires. Si nous obtenons , déclarons une tête; si nous obtenons , déclarer une queue, et sinon répéter l'expérience jusqu'à ce que l'un des deux résultats susmentionnés se produise. Ils sont également probables, ils doivent donc avoir une probabilité .H T T H 1 / 2p∈(0,1)HTTH1/2
Pièce 4 : Quelques mathématiques. (Taylor à la rescousse.)
En développant autour de , le théorème de Taylor affirme que
Notez que parce que chaque terme après le premier est négatif, nous avons donc
où sont connus a priori . D'où
où , etp 0 = 1 p a = 1 - a ( 1 - p ) - a ( 1 - a )h ( p ) = punep0= 10 < a < 1 p a = 1 - ∞ ∑ n = 1 b n ( 1 - p ) n
pune= 1 - a ( 1 - p ) - a ( 1 - a )2 !( 1 - p )2- a ( 1 - a ) ( 2 - a )3 !( 1 - p )3⋯.
0 < a < 10 ≤ b n ≤ 1 1 - p a = ∞ ∑ n = 1 b n ( 1 - p ) n = ∞ ∑ n = 1 b n P ( G ≥ n ) = ∞ ∑ n = 1 f n P ( G = n ) = E f ( G ) , Gpune= 1 - ∑n = 1∞bn( 1 - p )n,
0 ≤ bn≤ 11 - pune= ∑n = 1∞bn( 1 - p )n= ∑n = 1∞bnP (G≥n)= ∑n = 1∞FnP (G=n)= E f( G ) ,
f 0 = 0 f n = ∑ n k = 1 b k n ≥ 1G ∼ G e o m ( p )F0= 0Fn= ∑nk = 1bkpour .
n ≥ 1
Et, nous savons déjà comment utiliser notre pièce pour générer une variable géométrique aléatoire avec une probabilité de succès .p
Pièce 5 : Un tour de Monte-Carlo.
Soit une variable aléatoire discrète prenant des valeurs dans avec . Soit . Alors
[ 0 , 1 ] P ( X = x n ) = p n U ∣ X ∼ B e r ( X ) P ( U = 1 ) = ∑ n x n p n .X[ 0 , 1 ]P (X= xn) = pnU∣ X∼ B e r (X)
P (U= 1 ) = ∑nXnpn.
Mais, en prenant et , nous voyons maintenant comment générer une variable aléatoire et cela équivaut à générer une un.x n = f n B e r ( 1 - p a ) B e r ( p a )pn= p ( 1 - p )nXn= fnB e r (1- pune)B e r ( pune)