מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);

Slides:



Advertisements
Similar presentations
Processes and threads. תהליכים ותתי תהליכים תהליכים –כל תוכנית שרצה היא תהליך (process) –ניתן להתפצל מתהליך אחד למספר תהליכים, בעזרת הפקודה fork(). הרבה.
Advertisements

מבוא למדעי המחשב לתעשייה וניהול
מבוא כללי למדעי המחשב תרגול 1. כתיבת התוכנה כתיבת התוכנית עצמה נעשית ע " י כתיבת קובץ טקסט רגיל אשר תוכנו מקיים את כללי שפת C כתיבת התוכנית עצמה נעשית.
פונקציונל פונקציה מספר פונקציונל דוגמאות לא פונקציונל פונקציונל.
מבוא למדעי המחשב תרגול 2 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
1 תרגול 4 – פונקציות מבוא למדעי המחשב/מבוא לתכנות מערכות – סמסטר א' תשע"א.
תכנות תרגול 7 שבוע : מערכים עד היום התוכניות שלנו לא ידעו לשמור כמות גדולה של מידע ללא הגדרת כמות גדולה של משתנים. עד היום התוכניות שלנו לא.
Inverse kinematics (Craig ch.4) ב"ה. Pieper’s solution נתבונן ברובוט עם 6 מפרקי סיבוב כאשר שלושת הצירים של המפרקים האחרונים נחתכים. נקודת החיתוך נתונה.
תכנות תרגול 6 שבוע : חישוב e זוהי הנוסחא לחישוב e נראה כיצד לתרגם אותה לפונקציה n n.
תרגול 5 רקורסיות. רקורסיה קריאה של פונקציה לעצמה –באופן ישיר או באופן עקיף היתרון : תכנות של דברים מסובכים נעשה ברור ונוח יותר, מכיוון שזו למעשה צורת.
תכנות תרגול 4 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
תכנות תרגול 2 שבוע : שבוע שעבר כתבו תוכנית המגדירה שלושה משתנים מאתחלת אותם ל 1 2 ו 3 ומדפיסה את המכפלה שלהם את ההפרש שלהם ואת הסכום שלהם.
11 Introduction to Programming in C תרגול
מבוא למדעי המחשב תרגול 8 - מחרוזות שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא כללי למדעי המחשב תרגול. הבית האדום כתובת : רחוב קוקוריקו 2 הבית הירוק כתובת : רחוב קוקוריקו 4 הבית הצהוב כתובת : רחוב קוקוריקו 1 הבית הורוד כתובת.
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
מבוא למדעי המחשב תרגול 4 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
תרגול חזרה. מבנה האובייקט תאר את מבנה האובייקט כולל מבנה טבלאות הפונקציות הוירטואליות עבור התכנית הבאה struct A { int x; virtual void a() {}; }; struct.
Formal Specifications for Complex Systems (236368) Tutorial #6 appendix Statecharts vs. Raphsody 7 (theory vs. practice)
1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
תכנות תרגול 6 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
תכנות תרגול 3 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
תכנות תרגול 5 שבוע : לולאות for לולאות for for (counter=1 ;counter
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
מבני בקרה לולאות. שאלה #1 שאלה ב' – תכתוב תוכנה הכותבת את תפריט הבאה Type 1 to find the area of a circle Type 2 to find the circumference of a circle.
מבוא כללי למדעי המחשב תרגול 5. חישוב e זוהי הנוסחא לחישוב e נראה כיצד לתרגם אותה לפונקציה n n.
מבוא למדעי המחשב תרגול מספר.
תכנות תרגול 7 שבוע : מערכים עד היום התוכניות שלנו לא ידעו לשמור כמות גדולה של מידע ללא הגדרת כמות גדולה של משתנים. עד היום התוכניות שלנו לא ידעו.
תכנות תרגול 5 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
Remember Remember The 5 th of November. תרגול 2 קובץ סדרתי.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
עקרון ההכלה וההדחה.
תכנות תרגול 4 שבוע : לולאות for לולאות for for (counter=1 ;counter
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
Markov Decision Processes (MDP) תומר באום Based on ch. 14 in “Probabilistic Robotics” By Thrun et al. ב"הב"ה.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
מבוא למדעי המחשב תרגול מספר 4. בפעם הקודמת... מזהים טיפוסים טווח ייצוג קבועים.
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
- אמיר רובינשטיין מיונים - Sorting משפט : חסם תחתון על מיון ( המבוסס על השוואות בלבד ) של n מפתחות הינו Ω(nlogn) במקרה הגרוע ובממוצע. ניתן לפעמים.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
1 מבוא למחשב שפת C תרגילי חזרה. 2 תרגיל 1 : מחשבון קלט : תרגיל חשבוני המורכב ממספרים שלמים עם פעולות חשבוניות ביניהם. התרגיל מסתיים ב =. אפשריים רווחים.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
Int fact (int n) { If (n == 0) return 1; else return n * fact (n – 1); } 5 void main () { Int Sum; : Sum = fact (5); : } Factorial Program Using Recursion.
1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
Programming Arrays.
IF-ELSE כתוב תוכנית הקולטת שלושה מספרים ומדפיסה אותם בסדר עולה(ממיינת אותם)  קלט:7,2,4 ,פלט:2,4,7 .
Computer Architecture and Assembly Language
Formal Specifications for Complex Systems (236368) Tutorial #1
הרצאה 3: משפטים, תנאים ולולאות
מבוא למדעי המחשב סיבוכיות.
ניתוח זמן ריצה (על קצה המזלג)
מצביעים קרן כליף.
SQL בסיסי – הגדרה אינדוקטיבית
תירגול 14: מבני נתונים דינאמיים
לולאות קרן כליף.
ניתוח זמן ריצה (על קצה המזלג)
ניתוח זמן ריצה (על קצה המזלג)
תרגול 11 NP complete.
מבוא לתכנות בWINDOWS ב#C
מבוא כללי למדעי המחשב תרגול 4
שאלות מבחינות קודמות יואב ציבין.
מבחן t למדגם יחיד.
NG Interpolation: Divided Differences
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
מבוא לתכנות ב- Java תרגול 10 - רשימות מקושרות.
Computer Architecture and Assembly Language
Presentation transcript:

מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void); הפונקציה מייצרת מספר אקראי שלם בתחום 0 עד RAND_MAX מובטח ש-RAND_MAX הוא לפחות 32,767 הפונקציה מוגדרת ב-stdlib.h

דוגמאות יצירת מספר אקראי שלם בין 0 ל-19 (כולל): rand() % 20 יצירת מספר אקראי שלם בין 10 ל-20 (כולל): rand() % 11 + 10 יצירת מספר אקראי ממשי בתחום [0,1]: (double) rand() / RAND_MAX

יצירת מספרים אקראיים - אתחול אנו מעוניינים שבכל ריצה של התוכנית תיווצר סדרה שונה של מספרים אקראיים. את נקודת ההתחלה, ה-seed, ניתן לקבוע ע"י הפונקציה הבאה המוגדרת ב-stdlib.h: void srand(unsigned int seed); כדי שה-seed יהיה שונה בכל ריצה, יש לכתוב בתחילת התוכנית את הפקודה הבאה: srand(time(NULL)); כאשר הפונקציה time() מוגדרת ב-time.h

תרגיל כתוב תוכנית המדפיסה 7 מספרים אקראיים שלמים בתחום 5 עד 50 (כולל), ואח"כ מדפיסה 7 מספרים אקראיים ממשיים בתחום [0,1]. דוגמה לפלט: 23 12 27 31 46 47 0.016877 0.554064 0.400006 0.784295 0.481857 0.487777 0.724479

פתרון #include <stdio.h> #include <stdlib.h> #include <time.h> int rand_int() { return rand() % 46 + 5; } double rand_real() return (double) rand() / RAND_MAX;

פתרון - המשך int main() { int k; srand(time(NULL)); for ( k=0; k<7; k++ ) printf("%d\n",rand_int()); printf("%f\n",rand_real()); return 0; }

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

#include <stdio.h> #include <stdlib.h> #include <time.h> double rand_real() { return (double) rand() / RAND_MAX; } int main() int all = 0,good = 0; double x,y,temp; srand(time(NULL));

while (1) { x = rand_real(); y = rand_real(); if ( x > y ) { temp = x; x = y; y = temp; } if ( x >= 0.5 || y - x >= 0.5 || 1 - y >= 0.5 ) good++; all++; if ( all % 1000000 == 0 ) printf("%d / %d = %f\n", good,all,(double) good/all); return 0;

תרגיל מספר יקרא מושלם אם הוא שווה לסכום מחלקיו. דוגמאות: 6 = 1 + 2 + 3 28 = 1 + 2 + 4 + 7 + 14 כתבו תוכנית הקוראת מספר שלם n ומדפיסה את כל המספרים המושלמים מ-1 עד n (כולל). התוכנית צריכה להיות יעילה ככל האפשר מבחינת זמן ריצה.

פתרון #include <stdio.h> int sum_of_dividers(int n) { int k,sum = 1; for ( k = 2; k * k <= n; k++ ) if ( k * k == n ) sum += k; else if ( n % k == 0 ) sum += k + n / k; return sum; }

פתרון - המשך int main() { int n,k; scanf("%d",&n); for ( k = 2; k <= n; k++ ) if ( sum_of_dividers(k) == k ) printf("%d\n",k); return 0; }