نمودار رندوم

اگر 10000 بار 50 نفر به صورت اتفاقی به هم 1 واحد پول بدهند چه می شود؟

به نام خدا

فرض کنید در یک اتاق 50 نفر وجود دارند که هر کدام 100 تومان در حسابشان دارند ، حالا در دور اول حر فرد به صورت اتفاقی 1 تومان به فرد دیگری می دهد. اگر فردی مقدار پولش به 0 برسد از دور خارج می شود.

به نظر شما بعد از 10,000 بار چه می شود؟

پاسخ شهودی ما به این سوال این است که چون به صورت رندوم پول جا به جا می شود، مقدار پول تقریبا در یک سطح باقی می ماند ولی ایا واقعا این طور است؟

حل مسئله

بسیار خوب برای حل این مسئله ما نیاز به یک لیست 50 تایی که هر کدام مقدار اولیه 100 دارد را ایجاد می کنیم

people = []
for i in range(50):
    people.append(100)

پایه کار ما به این صورت می باشد که 1 واحد از پول فرد اول کم می شود و یک واحد به فرد دوم که به صورت اتفاقی انتخاب شده است اضافه می شود

people[person1] = people[person1] - 1
people[person2] = people[person2] + 1

برای انتخاب اتفاقی کاربر از کتابخانه random استفاده می کنیم

import random
person2 = random.randrange(0,50)

برای نمایش بهتر نتیجه ما از کتابخانه قدرتمند matplotlib برای نمایش نموداری اطلاعات استفاده کرده ایم.

الان که توانستیم به صورت رندوم یک کاربر انتخاب کنیم می توانیم برنامه کامل را به صورت زیر بنویسم.

کد کامل

import random
import matplotlib.pyplot as plt
people = []
for i in range(50):
    people.append(100)
for i in range(10000):
    for person1 in range(50):
        if people[person1] == 0:
            continue
        people[person1] = people[person1] - 1
        person2 = random.randrange(0,50)
        while people[person2] == 0:
            person2 = random.randrange(0,50)
        people[person2] = people[person2] + 1
people.sort()
plt.bar(range(50),people)
plt.show()

نظر خود را بگویید

آدرس ایمیل شما منتشر نخواهد شد. قسمت های مورد نیاز علامت گذاری شده است *