פיצ'ר 3: חוקר.ת קוביות מוסמכ.ת
בהרבה מקרים, כדי להיות ממש מומחים במשהו, צריך להיכנס לראש של הצד השני.
אנחנו במשטרה, לפעמים צריכים לחשוב כמו גנבים על מנת להצליח לתפוס אותם.
שוטרת
או למשל בתחום הסייבר. כאשר רוצים להגן על אתר אינטרנט מפני פריצות ודליפת מידע. אנחנו, מומחי הסייבר, לפעמים נתנהג כמו האקרים! ננסה לתקוף את האתר, להפיל אותו או לגנוב ממנו מידע - רק בשביל לגלות את הפרצות והבעיות ומיד לתקן אותן.
דורון
בואו נחשוב כמו זייפנים!
בהרבה משחקים ואתרים יש קובייה וירטואלית שהשחקן מטיל, כחלק מהמשחק. צריך לוודא שגם הקובייה הזו הוגנת!
כמו שלמדנו, נוכל להטיל אותה הרבה פעמים, לצייר גרף ולראות מה קיבלנו...
יסמין
נכון! אבל כדי להיכנס לראש של זייפני קוביות, וממש לזהות קוד של קובייה שאינה הוגנת, כדאי שננסה בעצמנו לתכנת קוד כזה. קוד של קובייה שהיא אינה הוגנת.
דורון
רגע, לפני שאנחנו ניגשים לתכנת, אפשר עוד קצת להבין את הנושא?
יסמין
בוודאי. זו השיטה שלנו תמיד :) קודם להבין ורק אחר כך לתכנת.
דורון
הנה שני גרפים שהתקבלו מהטלת הקובייה הוירטואלית.
מה קורה עם הקובייה הזו?
1. מה אתם חושבים על הקובייה שיצרה את הגרף הזה?
2. עבור קובייה הוגנת, ראינו כי אם נטיל אותה למשל 100,000 פעמים, כל פאה תתקבל בערך שישית מהפעמים. מה אנחנו חושבים שיקרה עם הקובייה הזו?
בואו נבדוק את זה!
בתחילת הפרויקט כתבנו קוד אשר מטיל באופן אוטומטי קובייה הוגנת - קובייה שבה לכל פאה יש את אותו סיכוי לצאת.
עכשיו אנחנו רוצים לחשוב כמו זייפנים, ולכתוב קוד אשר מטיל באופן אוטומטי קובייה מזויפת, למשל כזו עם פי 2 סיכוי לקבל 6 מאשר כל פאה אחרת.
איך "נייצר" במחשב קובייה עם תכונה זו?? אולי פינת הידעת כאן למטה יכולה קצת לעזור לחשיבה… :)
דורון
איך נחשוב כמו זייפנים?
3. עלינו לשנות את האלגוריתם הקיים, זה שכרגע מטיל קובייה הוגנת פעמים רבות - כך שיביא לתוצאות הטלה דומות לגרפים שראינו למעלה.
איזה חלק בקוד צריך להשתנות לדעתכם?