1 / 10

אקראיות

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

joannaw
Télécharger la présentation

אקראיות

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. אקראיות

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

  3. Pseudo-Randomness • מחשבים מייצרים מספרים אקראיים באמצעות נוסחאות שונות המקנות אקראיות (לכאורה) • האקראיות המושגת באמצעות נוסחאות אלו מתבססת על פרמטרים רבים ושונים כגון הזמן בו נוצרים המספרים (בעברית יש לומר מחוללים), מצב המעבד וכו׳. • בשונה מאקראיות בטבע אשר מושפעת מתהליכים טבעיים. • Atmospheric noise (http://www.random.org/)

  4. Randomמחלקת • אובייקט ממחלקת ה- Randomמייצר מספרים אקראיים. מחלקה זו נמצאת בחבילה java.util: import java.util.*;נשתמש בפקודה הבאה בכדי שנוכל להשתמש באוביקטים שכאלו לא נדון כעת במשמעות המחלקות או החבילות. לקראת בסוף הקורס נעסוק בכך בהרחבה. לדוגמא: Random rand = new Random(); intrandomNumber = rand.nextInt(10); // 0-9

  5. יצירת מספרים אקראיים - המשך • שימוש שכיח: יצירת מספרים אקראיים בטווח מסויים בדוגמא זו אנו נייצר מספר אקראי מטיפוס integer ונכניס אותו אל תוך המשתנה n. int n = rand.nextInt(20) + 1; // 1-20 כולל * שימו לב כי טרם השימוש בפקודות, יהיה עלינו תמיד להשתמש בפקודה Random <שם המשתנה> = new Random(); • בכדי לייצר מספר אקראי בין שני מספרים ספציפיים (כולל): name.nextInt(size of range) + min • כאשרsize of rangeהינו(max - min + 1) • לדוגמא: ניצור מספר אקראי בין 4 ל10 כולל int n = rand.nextInt(7) + 4;

  6. Randomשאלות לדוגמא על • בהנתן שיצרתם את המשתנה rand באופן הבא, פתרו את השאלות הבאות: Random rand = new Random(); • מספר אקראי בין 1 ל -47 כולל הקצוות int random1 = rand.nextInt(47) + 1; • מספר אקראי בין 23 לבין 30 כולל int random2 = rand.nextInt(8) + 23; • שאלת בונוס – מספר זוגי בין 4 לבין 12 כולל int random3 = rand.nextInt(5) * 2 + 4;

  7. תרגיל כיתה • כתבו קוד אשר ייצג באמצעות מספרים אקראיים את המשחק אבן-נייר-ומספריים. נסו לחשוב כיצד לעשות זאת באמצעות פקודת if שלמדנו וערך המתקבל ממספר אקראי מסוג integer. • פתרון:נייצג כל אפשרות באמצעות מספר 0 – אבן, 1 – נייר , 2 - מספריים: int r = rand.nextInt(3); if (r == 0) { System.out.println("Rock"); } else if (r == 1) { System.out.println("Paper"); } else { // r == 2 System.out.println("Scissors"); }

  8. Randomוטיפוסים שונים... • nextDouble מייצרת (מחזירה) doubleבין 0.0 - 1.0 • מספר אקראי מסוג double בטווח של 1.5 ועד 4 כולל: double randomDouble= rand.nextDouble() * 2.5 + 1.5;

  9. Randomדוגמא לשאלה נוספת • לשם כתיבת תוכנה זו עליכם להיות בקיאים בשימוש בלולאות. אם אינכם יודעים כיצד לפתור אותה – המתינו עד לשיעור המתאים בקורס. • שאלה: כתבו תוכנה המטילה שתי קוביות עד שהסכום המתקבל הוא הוא 7. הקפידו להציג את תוצאות ההטלה באופן הבא בכל פעם שהתוכנה מגרילה זוג הטלות: 2 + 4 = 6 3 + 5 = 8 5 + 6 = 11 1 + 1 = 2 4 + 3 = 7 You won after 5 tries!

  10. Randomפתרון // Rolls two dice until a sum of 7 is reached. import java.util.*; public class Dice { public static void main(String[] args) { Random rand = new Random(); int tries = 0; int sum = 0; while (sum != 7) { // roll the dice once int roll1 = rand.nextInt(6) + 1; int roll2 = rand.nextInt(6) + 1; sum = roll1 + roll2; System.out.println(roll1 + " + " + roll2 + " = " + sum); tries++; } System.out.println("You won after " + tries + " tries!"); } }

More Related