درک برنامه نویسی: چی می شه اگر ۵۰ نفر در یک اتاق…

مدتی پیش دوستی توجهم رو به این مساله ریاضی جالب جلب کرد:

چی می شه اگر ۵۰ نفر در یک اتاق نفری ۱۰۰ دلار داشته باشن. در هر دور هر کس به شکل رندم یک نفر رو انتخاب می کنه و یک دلار از پولش رو به اون می ده. اگر پول کسی تموم بشه از بازی بیرون گذاشته می شه. بعد از بارها بازی کردن، وضعیت پول ها چطور خواهد بود؟

این از اون مسائلی است که جواب شهودی اکثر ما در موردش اشتباهه. حتی جواب شهودی خیلی از ریاضی‌دان‌ها. جواب شهودی من که اینه که «خب چون نفر رندم اتفاق می شه، توزیع در نهایت تفاوت چندانی نمی کنه» ولی آیا واقعا اینطوره؟ در سری درک برنامه نویسی قسمت های ۱۴ و ۱۵ و ۱۶، بعد از گپی کوتاه در مورد آرایه ها یا لیست ها، سراغ حل این مساله میریم و نمودار نهایی رو هم به شکل گرافیکی ترسیم می کنیم.

  • milad

    سلام جادی جان عالیه، فقط مشکلی که هست matplotlib برای پایتون۲.۷ هست، اگر بخواهیم پایتون۳ کار کنیم تکلیف چیه؟
    تست کرد نمی شد ماژول را ایمپورت کرد ممنون میشم جواب بدی.

    • jadijadi

      الان سال ها است که برای پایتون ۳ هم هست. فقط باید دقت کنی برای پایتون ۳ هم نصبش کنی. مثلا pip3 install matplotlib

      • milad

        ممنون من فقط در همین جستجو کردم، به یک سایتی رسیدم که با apt نصب کرده بود من از مخازن اوبونتو نصب کردم، کدوم بهتره و توصیه میشه؟

        • صادق

          من باشم بسته‌ها را با استفاده از virtualenv برای هر پروژه (یا گروه پروژه) جداگانه نصب می‌کنم و تا حد امکان قاطی بسته‌های سیستم نمی‌کنم.

  • کنجکاو

    آقا معنی این چیه؟!
    https://imgur.com/a/bpwJp

  • ali

    سلام میتونم بپرسم با کدوم برنامه حاشیه دور خوت را حذف کردی؟

    • jadijadi

      فیلتر کروما که توی خیلی برنامه ها هست. ولی نور باید خوب باشه (:

  • ali

    سلام جادی چطوری حاشیه دور خودت رو حذف کردی؟

  • مهدی اسدی

    ببخشید تو ترمینال که چارت کار نمی کنه چه باید بکنیم

    • jadijadi

      سرچ وب (: قراره اون مهارت اصلی رو یاد بگیریم

      • مهدی اسدی

        اوه معذرت میخوام که در سوال پرسیدن عجله کردم ، هیچ مشکلی در اجرای چارت در ترمینال وجود نداره من فقط داشتم از طریق ssh برنامه را اجرا میکردم بخاطر همین چارت نشان داده نمی شد چون فکر میکردم لابد چارت هم در خود ترمینال اجرا میشه

  • Mohamad Fazeli

    سلام جادی جان،
    من SysAdmin مکتب خونه ام ( maktabkhooneh.org سایتی با ۸۰۰۰ ساعت اموزش رایگان ویدیویی)
    توی این سایت جای همچین ویدیو هایی خیلی خالی و کاربرامون خیلی اذیت میشن،
    مایلی یه دوره ای اینطوری رو روی سایت ما قرار بدی که بچه ها ازش استفاده کنن؟

    • jadijadi

      از نظر من که خیلی هم خوبه اونجا باشه. نمی دونم مکانیزمش چیه. اگر دوست داشتین آپلود کنین یا هر روش دیگه (:

      2017-07-31 15:16 GMT+04:30 Disqus notifications@disqus.net:

      • Mohamad Fazeli

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

        • jadijadi

          فکر کنم ایمیل بزنی بهترین کار باشه (: jadijadi gmail

          2017-08-02 14:12 GMT+04:30 Disqus notifications@disqus.net:

    • رضا

      دوست عزیز محتوای سایت مکتبخونه بسیار عالی و تخصصی هست، لطفا با این ویدیوها خرابش نکنین

      • Mohamad Fazeli

        همیشه سعی بچه‌هایی که محتوی رو بررسی می‌کنن این بوده که کیفیت اموزش خوب باشه،ممنونم از این بخش که محتوی مکتب خونه رو باکیفیت میدونید
        اما بخش دوم نظر شما، به عنوان ادمی که چند سالی هست به حرفه‌ای کار نرم‌افرازی می‌کنم، جای خیلی از افراد بدون اینکه دانشی توی این زمینه داشته باشن وارد بازار کار میشن و بعدا می‌پرسن که چطور می‌شه ما مثل بقیه پیشرفت نمیکنیم، خیلی وقت‌ها دلیل اینه که پایه‌های دانششون ضعیف هست و دیدی به داخل لایبرری ها و فیرم ورک ها ندارن و فقط طوطی وار یه سری چیز رو تایپ میکنن و یا کپی پیست میکنن.
        دونستن خیلی از مفاهیم پایه‌ای شاید همه جا به کار نیاد اما تفاوت بین برنامه نویس معمولی و خوب همین هست که دانش برنامه نویس های خوب عمق هم داره و فقط سرچ توی گوگل و کپی پیست نتیجه‌ی اول جست‌وجو نیست.

        • رضا

          بخش دوم نظر منو فک کنم بد برداشت کردین،

          منظورم اینکه خوشبختانه یا متاستفانه ویدیوهای جادی بصورت سرفصل تعریف شده و کامل نیست، ویدیوها طوری نیست که به عنوان رفرنس کلی و گام به گام نگا کرد.
          در حالی که همه ویدیو ها مکتب خونه کامل و یه روند خوبیو برا تدریس انتخاب کردن.

          مگه اینکه جادی هم نحوه تدریس رو تغییر بده، و یهو تووو وسط ویدیوها شاهد این نباشیم که مثلا 10 دقیقه وسط ماجرا معلوم نیست چی شده

  • مهدی

    سلام جادی جان
    اگه درست یادم باشه یه جا گفتی تو این دوره ها از زبان های برنامه نویسی دیگه هم استفاده میکنی!
    از زبان سی شارپ هم استفاده میکنی؟
    یا فقط زبان های ازاد مثل پایتون و … استفاده میشه؟

    • jadijadi

      درست حدس زدی. فقط از زبان های آزاد استفاده می کنیم. احتمالا کمی روبی. کمی پرل. گاهی سی.

  • Mahdiyar Esmail Beigi

    سلام جادی، مرسی به‌خاطر این دورۀ خیلی عالی.
    این‌طوری که از صورتِ سئوال مشخصه، تو هر دور هر کسی باید ی دلار از پول‌ش رو به ی نفر «به‌غیر از خودش» بده.
    اگه من درست متوجه شده باشم، تو کُدی که شما نوشتی این شرط وجود نداره.
    به‌نظر می‌رسه که این خط از کد رو while people[person2] == 0 اگه با این خط while people[person2] == 0 or person2 == person1 جایگزین کنیم، کُدِمون به صورتِ سئوال نزدیک‌تر می‌شه.
    البته این موضوع تاثیرِ چندانی رو نتیجۀ نهایی نمی‌ذاره.

    • jadijadi

      کاملا درسته و فکر کنم دوستان بهش اشاره کردن تو کامنت های اینجا یا یوتوب. باید این می بود

      2017-08-05 12:25 GMT+04:30 Disqus notifications@disqus.net:

  • mohammadgolfami

    سلام جادی عزیز. ممنونم بابت اینهمه بزرگواریت. یه سوال:
    چجوری تصویر خودت رو بصورت ترنسپرنت پایین این ویدیو گذاشتی؟

  • پوریا

    سلام جادی درس 16 کوش؟

  • Sadeq

    خیلی خیلی ممنونم بابت زحماتی می کشی
    امیدوارم همیشه شاد و پیروز باشی

  • Pingback: پیاده‌سازی قسمت‌های ۱۵ و ۱۶ ویدیو‌های درک برنامه‌نویسی جادی در R یا چی می شه اگر ۵۰ نفر در یک اتاق… - use R()

  • سلام جادی، من سعی کردم این مساله رو تو R حل کنم و اینجا نوشتم درباره‌ش: http://use-r.ir/2017/08/100-problem/

  • کسی که انتخاب میشه می‌تونه خودش باشه؟ از خودش کم کنه به خودش اضافه کنه؟