דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. חידה חביבה: כיצד להעריך בקירוב את הקבוע π באמצעות מספרים אקראיים

חידה חביבה: כיצד להעריך בקירוב את הקבוע π באמצעות מספרים אקראיים

מתוזמן נעוץ נעול הועבר תכנות
26 פוסטים 3 כותבים 709 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • yossizY מנותק
    yossizY מנותק
    yossiz
    כתב ב נערך לאחרונה על ידי
    #9

    עכשיו נהפוך את הנ"ל לקוד...
    טוב, מיד אני תופס שאפשר לקבל יותר דיוק על ידי שנשמיט את שלב הפיקסול. יופי!

    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

    תגובה 1 תגובה אחרונה
    0
    • OdedDvirO מחובר
      OdedDvirO מחובר
      OdedDvir
      כתב ב נערך לאחרונה על ידי OdedDvir
      #10

      @רחמים זה אכן הכיוון. (שמא נתפתית לגגל?...)
      @yossiz
      א. אתה ממש קרוב לפתרון.
      ב. לא צריך טריגונומטריה.
      ג. נסה לפשט עוד יותר את הדרך שלך.

      yossizY תגובה 1 תגובה אחרונה
      1
      • yossizY מנותק
        yossizY מנותק
        yossiz
        השיב לOdedDvir ב נערך לאחרונה על ידי yossiz
        #11

        @odeddvir אסור להעלות נושאים כאלו בפורום בדיוק כאשר תכננתי ללכת לישון... :smile:
        טוב, לא נורא, אם אקום בבוקר עם תשובה ואראה שמישהו אחר הקדים אותי זה לא סוף העולם, נכון?

        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

        תגובה 1 תגובה אחרונה
        2
        • רחמיםר מנותק
          רחמיםר מנותק
          רחמים מורחק
          השיב לyossiz ב נערך לאחרונה על ידי
          #12

          @yossiz אמר בחידה חביבה: כיצד להעריך בקירוב את הקבוע π באמצעות מספרים אקראיים:

          כנראה צריך קצת טריגונומטריה

          כל פונקציה מתמטית שתגלה לך אם אתה בתוך העיגול - מבוססת על הפאי, ואיך אתה יכול להשתמש בפונקציה זו כאשר אתה בא לברר מהו הפאי, אתה עדיין לא יודע מהו הפאי!

          yossizY תגובה 1 תגובה אחרונה
          0
          • yossizY מנותק
            yossizY מנותק
            yossiz
            השיב לרחמים ב נערך לאחרונה על ידי
            #13

            @רחמים הדגמתי בדיקה אם אני בתוך העיגול מבלי להשתמש ב-PI

            📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

            רחמיםר תגובה 1 תגובה אחרונה
            1
            • רחמיםר מנותק
              רחמיםר מנותק
              רחמים מורחק
              השיב לyossiz ב נערך לאחרונה על ידי
              #14

              @yossiz אז למה לך להגריל מספרים אקראיים, פשוט תעבור על כל הפיקסלים ותספור כמה מהם בתוך העיגול וכמה בחוץ וככה תדע את הפאי - לפי היחס שבינהם?

              yossizY OdedDvirO 2 תגובות תגובה אחרונה
              2
              • yossizY מנותק
                yossizY מנותק
                yossiz
                השיב לרחמים ב נערך לאחרונה על ידי
                #15

                @רחמים אתה צודק. אני מקווה שהפתרון הסופי מאפשר להגיע לדיוק אינסופי - דבר שאי אפשר אם אתה ממיר את הריבוע לפיקסלים.

                📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                OdedDvirO תגובה 1 תגובה אחרונה
                0
                • OdedDvirO מחובר
                  OdedDvirO מחובר
                  OdedDvir
                  השיב לרחמים ב נערך לאחרונה על ידי
                  #16

                  @רחמים זו דרך לא רעה, אבל הדיוק שלה מוגבל לרזולוציה של הריבוע. המספרים האקראיים הם כדי לשפר את הדרך הזו.

                  רחמיםר תגובה 1 תגובה אחרונה
                  1
                  • OdedDvirO מחובר
                    OdedDvirO מחובר
                    OdedDvir
                    השיב לyossiz ב נערך לאחרונה על ידי
                    #17

                    @yossiz אמר

                    אני מקווה שהפתרון הסופי מאפשר להגיע לדיוק אינסופי

                    תיאורטית - כן (אם גם הזמן שלרשותך הוא אינסופי, כמובן 🙂 )

                    תגובה 1 תגובה אחרונה
                    1
                    • רחמיםר מנותק
                      רחמיםר מנותק
                      רחמים מורחק
                      השיב לOdedDvir ב נערך לאחרונה על ידי רחמים
                      #18

                      @odeddvir המספרים האקראיים למעשה מצביעים על פיקסלים, כך שגם הם בסופו של דבר תלויים ברזולוציה.
                      אגב, רזולוציה גבוהה היא לא בעיה כלל. קח ריבוע של 2 מליון על 2 מליון פיקסלים, ועיגול ברדיוס של 1 מליון, ויצא לך פאי עם 6 ספרות אחרי הנקודה.

                      OdedDvirO תגובה 1 תגובה אחרונה
                      0
                      • OdedDvirO מחובר
                        OdedDvirO מחובר
                        OdedDvir
                        השיב לרחמים ב נערך לאחרונה על ידי OdedDvir
                        #19

                        @רחמים השיטה שהבאת תעבוד, והדיוק המתקבל ממנה אכן תלוי ישירות ברוחב הריבוע (אם כי אני לא בטוח שהדיוק של 6 ספרות אחר הנקודה, זהה לסדר הגודל של הריבוע (מיליון ~ 6 ספרות בערך...)
                        החיסרון שלה לעומת הפתרון שאליו אני חותר, הוא סדר הגודל של החישובים הנדרשים (מליון*מליון=טריליון 😵 ).

                        רחמיםר תגובה 1 תגובה אחרונה
                        1
                        • רחמיםר מנותק
                          רחמיםר מנותק
                          רחמים מורחק
                          השיב לOdedDvir ב נערך לאחרונה על ידי
                          #20

                          @odeddvir למה אתה צריך את זה כל כך מהר? הרי פאי זה משהו שבודקים פעם אחת ומאז משתמשים, אפילו אם החישוב יקח דקה או שעה מה מפריע, הוא חד פעמי.

                          OdedDvirO תגובה 1 תגובה אחרונה
                          0
                          • OdedDvirO מחובר
                            OdedDvirO מחובר
                            OdedDvir
                            השיב לרחמים ב נערך לאחרונה על ידי
                            #21

                            @רחמים הנקודה העיקרית כאן היא לא איך לחשב את π, לזה יש אלגוריתמים יעילים פי אלף (על ידי טור מתכנס לדוגמא, אפשר להגיע לדיוק של 10 ספרות אחרי הנקודה בסיכום של כמה איברים בודדים, עיין כאן למשל)
                            הרעיון מאחורי החידה היא איך לשער את π בצורה יחסית יעילה (ובעיקר אלגנטית), בהתחשב בהגבלות של החידה.

                            תגובה 1 תגובה אחרונה
                            0
                            • yossizY מנותק
                              yossizY מנותק
                              yossiz
                              כתב ב נערך לאחרונה על ידי yossiz
                              #22

                              @OdedDvir חמסי עליך! (קח בקלות, אני לא באמת מתרגז, ותודה על החידה 🙂 )
                              חיכיתי יומיים לראות אם אחרים ינסו את כוחם, וכאשר ראיתי שאין קול ואין עונה הלכתי לגוגל.
                              ממה שהצלחתי למצוא נראה לי שעניתי נכון לגמרי. ושדבריך לא נכונים. אשמח אם תראה לי איפה אני טועה.

                              חיפשתי בגוגל: https://www.google.com/search?q=Monte+Carlo+pi+python
                              ומצאתי כמה דוגמאות, מתוכם זה: https://gist.github.com/louismullie/3769218

                              @odeddvir אמר בחידה חביבה: כיצד להעריך בקירוב את הקבוע π באמצעות מספרים אקראיים:

                              אתה ממש קרוב לפתרון

                              לא הייתי "ממש קרוב", הייתי שם לגמרי, רק חסרה קצת אלגנטיות (טוב, לא נתווכח על זוטות כאלו)

                              לא צריך טריגונומטריה

                              הפתרון הנ"ל מבוסס על משפט פיתגורס בדיוק כמו הפתרון שלי, אולי עשיתי שימוש לא נכון במונח "טריגונומטריה". אני לא יודע מה נכנס תחת מטריה זו.

                              @odeddvir אמר בחידה חביבה: כיצד להעריך בקירוב את הקבוע π באמצעות מספרים אקראיים:

                              @רחמים זו דרך לא רעה, אבל הדיוק שלה מוגבל לרזולוציה של הריבוע. המספרים האקראיים הם כדי לשפר את הדרך הזו.

                              @odeddvir אמר בחידה חביבה: כיצד להעריך בקירוב את הקבוע π באמצעות מספרים אקראיים:

                              @yossiz אמר

                              אני מקווה שהפתרון הסופי מאפשר להגיע לדיוק אינסופי

                              תיאורטית - כן (אם גם הזמן שלרשותך הוא אינסופי, כמובן )

                              אני רוצה לחלוק על הנחה זו. דרך זו גם כן מוגבלת לרזלוציה של המספר הרנדומלי בדיוק כמו הפתרון של @רחמים. כל ההבדל מסתכם בכך שניתן להגיע להשערה קרובה עם פחות חישובים.

                              📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                              OdedDvirO תגובה 1 תגובה אחרונה
                              1
                              • yossizY מנותק
                                yossizY מנותק
                                yossiz
                                כתב ב נערך לאחרונה על ידי
                                #23

                                הנה דוגמאות קוד עבור כל שפה שרק תבחר:
                                https://www.rosettacode.org/wiki/Monte_Carlo_methods

                                📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                                תגובה 1 תגובה אחרונה
                                3
                                • OdedDvirO מחובר
                                  OdedDvirO מחובר
                                  OdedDvir
                                  השיב לyossiz ב נערך לאחרונה על ידי OdedDvir
                                  #24

                                  @yossiz אמר:

                                  הייתי שם לגמרי, רק חסרה קצת אלגנטיות

                                  ברור, כתבתי ל@רחמים שזה הכיוון. מצטער אם הטעתי אותך במה שכתבתי שאתה קרוב, יש לי נטייה להתלהב מהאלגנטיות יותר מעצם המטרה... זה באמת זוטות.

                                  כמדומני שמשפט פיתגורס שייך יותר לגיאומטריה (לפחות בלשון העם), ולכן רציתי להוריד אותך מלהסתבך עם פונקציות טריגונומטריות.

                                  דרך זו גם כן מוגבלת לרזלוציה של המספר הרנדומלי

                                  נכון, אבל שם המוגבלות נובעת ממבנה הנתונים שמייצרת הפונקציה (למשל Decimal), ומכל מקום אפשר להריץ את האלגוריתם בלולאה אינסופית שתשפר את הדיוק בכל פעם, ואפשר להתגבר על המוגבלות של מספר הספרות המקסימלי של Decimal על ידי שימוש במבני נתונים ענקיים, בניגוד לאלגוריתם שהציע @רחמים, שם מספר החישובים המקסימלי הוא קבוע מראש לפי גודל המערך, וכדי להגיע לדיוק יותר טוב צריך להריץ הכל מחדש על מערך יותר גדול.

                                  אגב, לכבוד הוא לי להתווכח על זוטות כאלו איתך.

                                  yossizY תגובה 1 תגובה אחרונה
                                  3
                                  • yossizY מנותק
                                    yossizY מנותק
                                    yossiz
                                    השיב לOdedDvir ב נערך לאחרונה על ידי
                                    #25

                                    @odeddvir אמר בחידה חביבה: כיצד להעריך בקירוב את הקבוע π באמצעות מספרים אקראיים:

                                    ברור, כתבתי ל@רחמים שזה הכיוון. מצטער אם הטעתי אותך במה שכתבתי שאתה קרוב, יש לי נטייה להתלהב מהאלגנטיות יותר מעצם המטרה... זה באמת זוטות.

                                    נחמתני 🙂

                                    דרך זו גם כן מוגבלת לרזלוציה של המספר הרנדומלי

                                    נכון, אבל שם המוגבלות נובעת ממבנה הנתונים שמייצרת הפונקציה (למשל Decimal), ומכל מקום אפשר להריץ את האלגוריתם בלולאה אינסופית שתשפר את הדיוק בכל פעם, ואפשר להתגבר על המוגבלות של מספר הספרות המקסימלי של Decimal על ידי שימוש במבני נתונים ענקיים, בניגוד לאלגוריתם שהציע @רחמים, שם מספר החישובים המקסימלי הוא קבוע מראש לפי גודל המערך, וכדי להגיע לדיוק יותר טוב צריך להריץ הכל מחדש על מערך יותר גדול.

                                    לא הבנתי. אני לא רואה הבדל בין הפתרון שלך לבין זה של @רחמים חוץ מזה שאתה לוקח דגימות רנדומליות כדי להגיע לתוצאה קרובה והוא מדגים את הכל כדי להגיע לתוצאה מדויקת יותר. שתי הפתרונות מושפעות מרזלוצית הריבוע שאתה מדגים.

                                    📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                                    OdedDvirO תגובה 1 תגובה אחרונה
                                    0
                                    • OdedDvirO מחובר
                                      OdedDvirO מחובר
                                      OdedDvir
                                      השיב לyossiz ב נערך לאחרונה על ידי
                                      #26

                                      @yossiz נראה לי שעכשיו הבנתי את טענתך.
                                      בהתחלה אני הבנתי שדרכו של @רחמים היא ליצור מבנה נתונים של מערך שמצייג את הפיקסלים, ואחר כך לסרוק אותו תא אחר תא. ואז ממילא אתה מוגבל מבחינת זיכרון (מערך של מליון על מליון), ולכן עניתי לו שאתה מוגבל מבחינת הרזולוציה. גם לפי האמת שכלל לא צריך ליצור מערך, כי צריך רק את הקוורדינציות, ומספיקה לולאה כפולה שבה נגדיל את הנתונים בכל איטרציה בערך המינימלי של Decimal, עדיין השיטה הזו בזבזנית להחריד, ולא תיתן תוצאות רלוונטיות (קרובות לפאי מספיק) עד שתהיה מאוד קרוב לסוף הביצוע.
                                      הפתרון של שליפת קואורדינציה אקראית הוא יותר יעיל כך שהוא מספק תוצאות די קרובות במעט בדיקות (יחסית) ובנוסף דיוק התוצאה משתפר בכל איטרציה, כך שניתן לעצור בכל שלב שרוצים.

                                      עיין עוד כאן בניסוי המחט לחישוב פאי, שבו הגיעו לתוצאה מרשימה למדי, וכל מה שהם היו צריכים זה לזרוק מחט באויר...

                                      תגובה 1 תגובה אחרונה
                                      1
                                      • dovidD dovid העביר נושא זה מ-תכנות ב-

                                      • 1
                                      • 2
                                      בא תתחבר לדף היומי!
                                      • התחברות

                                      • אין לך חשבון עדיין? הרשמה

                                      • התחברו או הירשמו כדי לחפש.
                                      • פוסט ראשון
                                        פוסט אחרון
                                      0
                                      • דף הבית
                                      • קטגוריות
                                      • פוסטים אחרונים
                                      • משתמשים
                                      • חיפוש
                                      • חוקי הפורום