עבור לתוכן

איך מכניסים ל-float מס' רנדומלי בין 0(כולל) ל-1(לא כולל)? (C++)

Featured Replies

פורסם

על ידי שימוש ב- rand()

פורסם

אתה גם שואל וגם עונה?

פורסם
  • מחבר

עונה? :o

זו לא התשובה!

x=rand() מחזירה מספר בין 0 ל-לא זוכר(מס' גבוה) בהחלט לא בין 0 ל-1(לא כולל)

פורסם

rand() / (RAND_MAX + 1)

פורסם
  • מחבר

לא מכיר את הפקודה MAX

מה היא עושה?

פורסם

זו לא פונקציה, זה קבוע המוגדר באותה ספריה כמו הפונקציה rand

יש לך כל מיני קבועים במערך כמו NULL ששווה 0, INT_MAX ששוה ל-32,767 ועוד...

נוהגים לכתוב כתובים באותיות גדולות כך שתוכל לזהות אותן בקלות. הקבועים האלה מוגדרים בעזרת פקודת ה-pre compiler

#define

לדוגמא

#define NULL 0

צריך רק לדאוג שהחישוב הזה יעשה על float ולא על int

rand() / (RAND_MAX + 1.0)

אגב RAND_MAX שווה ל-32,767

פורסם
  • מחבר

אז למה אם מוסיפים לטווח המספרים של RAND את 1.0 אז זה ייתן טווח מספרים בין 0 ל-1(לא כולל)?

לפי הבנתי זה ייתן מספרים בין 1 ל- 32768

פורסם

rand() מחזיר מספרים בין 0 (כולל) ל-32,767 (כולל)

כדי לקבל מספר בין 0 (כולל) ל-1 (לא כולל) אתה צריך לחלק ב-32,768 (אם תחלק ב-32,767 תקבל תוצאה שכוללת את 1.0)

פורסם
  • מחבר

OK!! לא שמתי לב לחילוק!!

הבנתי את התשובה (אבל מה זה אומר עלי שלא הצלחתי לחשוב על זה לבד??)

אני חשבתי על זה:

האם באותה מידה אפשר לעשות משהו אחר כמו:

rand()\100000

פורסם

כדי לקבל מספר בין 0 (כולל) ל-N (לא כולל)

rand() / (RAND_MAX + 1.0) * N

פורסם
  • מחבר

אה, יפה!

איזה עוד טריקים כאלה יש?

פורסם

זה לא טריקים, זה סתם מתמטיקה...

אתה יכול בדרך די דומה לקבל מספר בין N ל-M

פורסם
  • מחבר

מספרים ממשיים?

תוכל לשחרר דוגמה לכך?

פורסם

שו?

פורסם
  • מחבר

התכוונתי שאפשר להשיג מס' רנדומלים בין כל M ל- N

שאלתי האם הם מסוג FLOAT

והאם יש לך את הנוסחה הכללית לכך

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים