ABA


"צריך עזרה בקשר לפעולת Random ב C"
גירסת הדפסה   אשכול נעול - לקריאה בלבד
 
   
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #6278 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 6278
Helpless

דרג אמינות חבר זה
   08:38   12.06.03   
אל הפורום  
  צריך עזרה בקשר לפעולת Random ב C  
 
   עבר עריכה לאחרונה בתאריך 12.06.03 בשעה 08:58
 
שלום.
אני בונה משחק בשפת C, ורוב המשחק מתבסס על ניחושים. הבעיה היא שהניחושים הם לא בדיוק מקריים. כלומר, האפשרות הרגילה ב Random היא להגריל מספר מתוך מספר מוגבל של מספרים. המחשב יגריל את המספר כשהוא לא מתחשב בכלום חוץ מגבול המספרים שלו. אני מחפש פונקציה , שתוכל גם להתייחס ליחס הגרלה מסויים.

בעיקרון זה אמור להיות ככה :
הפונקציה תגריל מספר או אות, מבין השלושה : 1 , X או 2
כל פעם שהמחשב יגריל אחד מהספרות\אותיות הללו, הוא יצטרך להביא בחשבון ש :

הסיכוי שהוא יפגע ב 1 הוא 2
הסיכוי שהוא יפגע ב X הוא 3
והסיכוי שהוא יפגע ב 2 הוא 4
* זה בגדר דוגמא, הסיכויים משתנים הרבה פעמים במשחק.
* יש אפשרות שהסיכויים יהיו גם מספרים לא עגולים כגון 1.4 וכו'.

משמע, המספר 2 לדוגמא, יעלה פעם אחת כל ארבעה הגרלות (בממוצע).

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


מישהו יכול לעזור לי בבניית פונקציה כזאת ?


תודה מראש


        שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  לא הבנתי את השאלה nevola 12.06.03 12:49 1
     אי אפשר להסביר את זה בצורה יותר ברורה Helpless 12.06.03 14:16 3
  יש לי דרך בשבילך. liranh  12.06.03 14:09 2
     תודה אבל Helpless 12.06.03 14:23 4
         ככה: adiadi 12.06.03 14:43 5
             תודה רבה Helpless 12.06.03 14:45 6
                 :) adiadi 12.06.03 14:48 7
         אני רואה שכבר הסתדרת :) liranh  12.06.03 14:50 8
             כן Helpless 12.06.03 14:51 9
                 סבבה אחי liranh  12.06.03 15:03 10
  up Mat-tour  30.10.05 17:25 11
  הצלת אותה בשביל שהיא תנעל... כל הכבוד (: nesher  30.10.05 18:17 12

       
nevola

דרג אמינות חבר זה
   12:49   12.06.03   
אל הפורום  
  1. לא הבנתי את השאלה  
בתגובה להודעה מספר 0
 
   עבר עריכה לאחרונה בתאריך 12.06.03 בשעה 12:53
 


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Helpless

דרג אמינות חבר זה
   14:16   12.06.03   
אל הפורום  
  3. אי אפשר להסביר את זה בצורה יותר ברורה  
בתגובה להודעה מספר 1
 
   עבר עריכה לאחרונה בתאריך 12.06.03 בשעה 14:24
 
אבל אני אנסה

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

אני רוצה להוסיף לפונקציה הזו משהו חדש
אני רוצה להגדיר לו מה הסיכוי שכל מספר יעלה בגורל
למשל, הסיכוי שהמספר 1 יעלה בגורל הוא אחד ל 2, הסיכוי ש-2 יעלה הוא 1 ל 3 והסיכוי ש 99 יעלה הוא אחד למאה. כלומר לפי הסטטיסטיקה, ברגע שתגריל פעמיים, פעם אחת יצא המספר 1.

למשל אם אני אנסה להגריל משתנים
כלומר אני אתן למחשב מספר משתנים, ואגיד לו להגריל את אחד מהם באופן רנדומלי
נניח ויש לי את המשתנים הבאים :

mishtane1 - הערך בתוכו הוא 1
mishtane2 - הערך בתוכו הוא 3
mishtane3 - הערך בתוכו הוא 1
mishtane4 - הערך בתוכו הוא 2
mishtane5 - הערך בתוכו הוא 1

לסיכום:
הערך 1 מופיע 3 פעמים ב 5 משתנים
הערך 2 מופיע פעם אחת ב 5 משתנים
הערך 3 מופיע פעם אחת ב 5 משתנים

מסקנה:
הסיכוי שהמחשב יבחר את הערך 1 הוא 3 ל 5 , או במילים אחרות 60%
הסיכוי שהמחשב יבחר את הערך 2 או 3 הוא 1 ל 5 , או במילים אחרות 20%


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

עכשיו הבנת ?


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
liranh  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 16.6.09
4157 הודעות, 1 פידבק, 2 נקודות
   14:09   12.06.03   
אל הפורום  
  2. יש לי דרך בשבילך.  
בתגובה להודעה מספר 0
 
   דבר ראשון, כדי להבצע הגרלה רגילה בין X,1 ו-2, אתה פשוט עושה Random(2) ואז עם switch אתה אומר אם יצא 0 אז X הוגרל, אם יצא 1 אז 1 הוגרל ואם יצא 2 אז 2 הוגרל.

עכשיו בקשר לסיכויים, אם הם לא עגולים, אז אתה יכול פשוט לתת לכל אחד מהאפשרויות (של הפגיעות) כמה מספרים, לפי הסיכוי שלו.
למשל לפי הדוגמא שלך: 1 יוגרל אם יצא נגיד 0 או 1. X יוגרל אם יצא 2,3 או 4, ו-2 יוגרל אם יצאו אחד מהמספרים: 5,6,7,8.

אה עכשיו רק אני רואה שכבר חשבת על משהו דומה, ואני מניח שהדרך שלי תעזור לך, מכיוון שלא השתמשתי במשתנים

שיהיה בהצלחה


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Helpless

דרג אמינות חבר זה
   14:23   12.06.03   
אל הפורום  
  4. תודה אבל  
בתגובה להודעה מספר 2
 
   לא לזה בדיוק התכוונתי. אני יודע איך להגריל גם את X, זה לא משנה אני גם יכול לקרוא לו 13.
ואת הדרך שלך גם הבנתי, אבל היא לא עוזרת במיוחד כי זה הכל עובד בראש שלי ולא במחשב
אני לא יכול להגיד לו שאם יוצא 0 1 או 2 אז מבחינתו זה X
כלומר אני יכול אבל זה לא יהיה אינטראקטיבי כי אני אצטרך לבנות משפט תנאי לכל סיכוי אפשרי, והמחשב מחשב בעצמו את הסיכויים.

אני מחפש משהו שאפשר לממש אותו על המחשב.

תודה בכל זאת ואם יש לך עוד רעיונות אשמח לשמוע


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
adiadi

דרג אמינות חבר זה
   14:43   12.06.03   
אל הפורום  
  5. ככה:  
בתגובה להודעה מספר 4
 
  
אני אכתוב את זה בכלליות, כבר תבין מזה :

בתוכנית הזו הסיכוי להוציא 1 הוא 40%, להוציא X הוא 35% ו-2 הוא 25%

int a = rand() % 100

if a < 40 result = 1
else if a < 75 result = X
else result = 2


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Helpless

דרג אמינות חבר זה
   14:45   12.06.03   
אל הפורום  
  6. תודה רבה  
בתגובה להודעה מספר 5
 
   עזרת לי מאוד


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
adiadi

דרג אמינות חבר זה
   14:48   12.06.03   
אל הפורום  
  7. :)  
בתגובה להודעה מספר 6
 
  


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
liranh  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 16.6.09
4157 הודעות, 1 פידבק, 2 נקודות
   14:50   12.06.03   
אל הפורום  
  8. אני רואה שכבר הסתדרת :)  
בתגובה להודעה מספר 4
 
  


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Helpless

דרג אמינות חבר זה
   14:51   12.06.03   
אל הפורום  
  9. כן  
בתגובה להודעה מספר 8
 
   תודה גם לך על הנכונות


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
liranh  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 16.6.09
4157 הודעות, 1 פידבק, 2 נקודות
   15:03   12.06.03   
אל הפורום  
  10. סבבה אחי  
בתגובה להודעה מספר 9
 
  


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Mat-tour 
חבר מתאריך 30.9.03
2490 הודעות, דרג אמינות חבר זה
   17:25   30.10.05   
אל הפורום  
  11. up  
בתגובה להודעה מספר 0
 
צריך להציל את ההודעה


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
nesher 

דרג אמינות חבר זה
   18:17   30.10.05   
אל הפורום  
  12. הצלת אותה בשביל שהיא תנעל... כל הכבוד (:  
בתגובה להודעה מספר 0
 
  


                                    (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
_________________________________________________________________________
למנהלים:  שחרר | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול | עריכת אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net