פורסם 2006 ביוני 2919 שנים לא עובד לי ה RANDOM RANDOMIZE הקומפיילר מציג בעיות (TURBO C ו- VISUAL C++) זה בעיה בתוכנה ? אני לא יכול לכתוב רנדום ...
פורסם 2006 ביוני 2919 שנים <p><p><p><p><p><p><p><p><p><p><p><p><p>נסה את זה:</p><p></p><div></div><pre class="ipsCode">#include <stdlib.h><br>#include <stdio.h><br><br>int main(){<br>printf("%d", rand());<br><br>return 0;<br>}</pre><p></p></p></p></p></p></p></p></p></p></p></p></p></p>
פורסם 2006 ביוני 2919 שנים מחבר <p><p><p><p><p><p><p><p><p><p><p><p><p>ואז ?</p><p>אם אני כותב:</p><p></p><div></div><pre class="ipsCode">randomize();<br>x=random(100)</pre><p></p><p>איקס זה כמובן משתנה ... והרנדום נותן לי מספרים מ0 -99</p><p>אז לא הבנתי מה כתבת ?</p></p></p></p></p></p></p></p></p></p></p></p></p>
פורסם 2006 ביוני 2919 שנים <p><p><p><p><p><p><p><p><p><p><p><p><p>אני לא כ"כ מכיר את הפונקציות שאתה עבדת איתן בכל אופן מה שאני כתבתי:</p><p>rand זוהי פונקציה שמחזיקה מספר שלם בין 0 ל-RAND_MAX.</p><p>RAND_MAX הוא קבוע שמוגדר שמשתנה ממחשב למחשב אך הוא עומד בערך על 32 אלף ומשהו.</p><p>כדי להגריל מספר בין 1 ל-99 תוכל להגרילו כך:</p><p></p><div></div><pre class="ipsCode">x=rand()%99+1;</pre><p></p><p>שים לב שבמידה ותריץ תוכנית זו מספר פעמים <strong>תמיד</strong> יצא לך אותו מספר, מאחר שישנו רצף מסודר של המספרים שיוגרלו.</p><p>אתה יכול לפתור זאת ע"י הפונקציה time שמחזירה את הזמן שעבר מ-1/1/1970 00:00:00 בשניות ולאתחל רצף ע"י הפונקציה srand.</p><p>לדוגמא: (בתוכנית הזו תקבל כל פעם מספר שונה בין 1 ל-99)</p><p></p><div></div><pre class="ipsCode">#include <stdio.h><br>#include <stdlib.h><br>#include <time.h><br><br>int main(){<br>srand(time(NULL));<br>printf("%d", rand()%99+1);<br><br>return 0;<br>}</pre><p></p></p></p></p></p></p></p></p></p></p></p></p></p>
פורסם 2006 ביוני 2919 שנים <p><p><p><p><p><p><p><p><p><p><p><p><p>נדמה לי שה random ו- randomize הן פונקציות שיש רק ב turbo c (אם אני לא טועה). עשית include ל stdlib.h ?</p></p></p></p></p></p></p></p></p></p></p></p></p>
פורסם 2006 ביוני 2919 שנים אתה צריך לעשות include לstdlib.h ולtime.h, אז להריץ את randomize מתישהו ואז מתי שבא לך להשתמש בפונקצייה random(100) שתחזיר מספר בין 0 ל99..סתם אם אתה מתעניין, הפונקציות האלה פועלות על העיקרון של הGUID... Genuine Unique Identification או משהו כזה.. הרעיון הוא שלפי השעה במחשב (שהרי היא אף פעם לא אותו הדבר), המחשב ממיר אותה למספר כלשהו שנקרא GUID. הכללת בתחילת התוכנית את time.h כדי שrandomize תוכל "להיות מוכנה" לקבל את הGUID לפי הזמן ופשוט לעשות שארית (מודולו.. %) במספר שביקשת.לכן, אם לדוגמא תרשוםrandom(100)הפונקצייה תקבל את הGUID ותבצע את הפעולה:GUID%100, ובכך תקבל מספר בין 0 (אם אין שארית) ל99 (השארית הכי גבוהה שיכולה להיות בחילוק ב100).
פורסם 2006 ביוני 2919 שנים GUID זה קיצור Globally Unique Identifier שהוא מספר רנדומלי שמשמש ב windows לזיהוי רכיבי תוכנה.
פורסם 2006 ביוני 3019 שנים אתה צריך לעשות include לstdlib.h ולtime.h, אז להריץ את randomize מתישהו ואז מתי שבא לך להשתמש בפונקצייה random(100) שתחזיר מספר בין 0 ל99..סתם אם אתה מתעניין, הפונקציות האלה פועלות על העיקרון של הGUID... Genuine Unique Identification או משהו כזה.. הרעיון הוא שלפי השעה במחשב (שהרי היא אף פעם לא אותו הדבר), המחשב ממיר אותה למספר כלשהו שנקרא GUID. הכללת בתחילת התוכנית את time.h כדי שrandomize תוכל "להיות מוכנה" לקבל את הGUID לפי הזמן ופשוט לעשות שארית (מודולו.. %) במספר שביקשת.לכן, אם לדוגמא תרשוםrandom(100)הפונקצייה תקבל את הGUID ותבצע את הפעולה:GUID%100, ובכך תקבל מספר בין 0 (אם אין שארית) ל99 (השארית הכי גבוהה שיכולה להיות בחילוק ב100).אני לא יודע מה המקור לבלבול שלך, אבל אין כאן שום קשר ל-GUID.פונקצית ה-rand הנפוצה והסטדנרטית מגרילה מספר pseudo-random (כמו-אקראי) ע"י חישוב על מספר כלשהו הנקרא SEED, ואז מציבה את התוצאה חזרה למשתנה SEED ומחזירה את התוצאה. על כן בהנתן SEED ראשוני קבוע, סדרת המספרים האקראית המוחזרת ע"י rand תהיה זהה.על מנת למנוע זאת משתמשים ב-srand כדי לאתחל את SEED לערך חדש כל פעם. ואיזה ערך שונה תמיד כל פעם שמפעילים את התוכנית? הזמן כמובן!אגב, הגרסה הנפוצה של מימוש rand נראית משהו כמו:int rand(){ seed = (seed * A) + B; return seed / DIV;}כאשר A ו- B הם ערכים שנבחרו במיוחד כי הם יוצרים סדרת מספרים ארוכה ויותר "אקראית", ן-DIV הוא בדרך כלל 65536 על מחשבי 32bit.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.