[PYTHON] Calculez le nombre de changements

Que voulez-vous faire

** Un événement d'exposition et de vente de livres ** est prévu. Le prix du livre est de 3000 yens. Le nombre maximum d'acheteurs est de 50. Combien de billets de 1000 yens et de billets de 5000 yens dois-je préparer pour ne pas manquer de monnaie?

Si vous ne manquez jamais

Il existe trois modèles possibles:

moyen de paiement Changement
3 billets de 1000 yens Aucun
5000 yens 1 feuille 1000 yens 2 feuilles
10000 yens 1 feuille 5000 yens 1 feuille et 1000 yens 2 feuilles

Étant donné que le modèle de 10000 yens comprend le nombre de tous les modèles, le pire des cas est lorsque 50 personnes paient 10000 yens, 1000 yens correspondent à 100 feuilles, 5000 yens correspondent à 50 feuilles, au total 350000 yens Vous devrez préparer une minute de changement.

Si vous n'en manquez pas autant que possible

La probabilité que les 50 personnes atteignent 10 000 yens est extrêmement faible. D'après Simulation du contenu du portefeuille, le contenu du portefeuille est supposé être les probabilités suivantes, et le contenu de chaque portefeuille est supposé être indépendant.

Nombre de factures probabilité
0 billets de 1000 yens 20%
1 billet de 1000 yens 20%
Deux billets de 1000 yens 20%
3 billets de 1000 yens 20%
4 billets de 1000 yens 20%
5000 yens 0 feuilles 50%
5000 yens 1 feuille 50%

À partir de là, la probabilité du modèle de paiement est la suivante. (Si vous avez une facture, vous l'utiliserez)

moyen de paiement Changement probabilité
3 billets de 1000 yens Aucun 40%
5000 yens 1 feuille 1000 yens 2 feuilles 30%
10000 yens 1 feuille 5000 yens 1 feuille et 1000 yens 2 feuilles 30%

(Probabilité de 10000 yens = 5000 yens 0 feuille x 1000 yens (0 à 2 feuilles) = 0,5 x (0,2 + 0,2 + 0,2) = 0,3)

Puisque nous avons supposé que chaque paiement était indépendant, la somme de plusieurs personnes ou plus peut être considérée comme une distribution normale. Simulons et vérifions.

python


r = []
for i in range(100000):
    n = 100
    p = np.random.rand(50)
    for x in p:
        if x < 0.3:
            n += 1
        elif x < 0.6:
            n -= 1
    r.append(n)
r = np.array(r)
plt.hist(r, bins=20, range=(50, 150))
print('%.3f %.3f' % (r.std(), math.sqrt(50 * 0.6)))
>>>
5.472 5.477

image

La répartition du nombre de billets de 1000 yens et du nombre de billets de 5000 yens est la suivante.

Répartition du nombre de billets de 1000 yens ~ $ N (n \ mu_ {1000}, n \ sigma ^ 2_ {1000}) $ \mu_{1000} = 0.4 ~ ~ 3 + 0.3 ~ (-2) + 0.3 ~ (-2) = 0 \sigma^2_{1000} = 0.4 (3-0)^2 + 0.3 (-2-0)^2 + 0.3 (-2-0)^2 = 6

Répartition du nombre de billets de 5000 yens ~ $ N (n \ mu_ {5000}, n \ sigma ^ 2_ {5000}) $ \mu_{5000} = 0.4 ~ ~ 0 + 0.3 ~ 1 + 0.3 ~ (-1) = 0 \sigma^2_{5000} = 0.4 (0-0)^2 + 0.3 (1-0)^2 + 0.3 (-1-0)^2 = 0.6

En supposant que la probabilité de ne pas avoir suffisamment de changement est de 5%, elle peut être calculée en utilisant 1,67591 à (0,1, 50) dans le tableau de distribution t bilatérale.

python


tv = 1.67591 
print('1000 yens%.3f' % (math.sqrt(50 * 6) * tv))
print('5000 yens%.3f' % (math.sqrt(50 * 0.6) * tv))
>>>
1 000 yens 29.028
5000 yens 9.179

Au final, nous préparerons 30 pièces de 1000 yens et 10 pièces de 5000 yens, pour un total de 80 000 yens. (Calculé en fonction du fait qu'il y a ou non une pénurie à la fin, pas au milieu) À ce stade, la probabilité que l'un ou l'autre soit insuffisant est d'environ 10% ($ = 1- (1-0,05) ^ 2 $) lorsqu'elle est calculée simplement, mais en réalité, elle peut être pensée comme suit, elle est donc de 5%. Je peux dire.

Cas probabilité sens
Excédent de 1000 yens Surplus de 5000 yens 0.9025 OK
Excédent de 1000 yens Pénurie de 5000 yens 0.0475 Vous pouvez même retourner le surplus de 1000 yens OK
Pénurie de 1000 yens Surplus de 5000 yens 0.0475 NG
Pénurie de 1000 yens Pénurie de 5000 yens 0.0025 NG

c'est tout

Recommended Posts