פורסם 2007 בדצמבר 1017 שנים צריך עזרה...כאשר אני עושה משהו כמו זה:Random rnd = new Random();num1=rnd.Next();num2=rnd.Next();אז תמיד בתוכנית num1 וnum2 יוצאים אותו מס' למרות שזה לא אמור לצאת אותו מספר (אם אני מריץ עם F11 שני המספרים יוצאים שונים - כמו שצריך)עזרה תתקבל בברכה!! (ואם אפשר כמה שיותר מהר!)תודה!!
פורסם 2007 בדצמבר 1017 שנים קודם כל, כשאתה רושם קוד בפורום, תשתמש בטג קוד (כפתור # למעלה) כדי שהקוד יוצג כהלכה.לגבי הבעיה שלך:הם תמיד יוצאים אותו דבר, או שבכל ריצה של התכנית הם יוצאים משהו אחר?כשאתה אומר "משהו כמו זה", למה אתה מתכוון בדיוק? אתה יכול להעלות את הקוד המדויק?יכול להיות שאתה מאתחל את האובייקט rnd לפני כל קריאה ל-rnd.Next?
פורסם 2007 בדצמבר 1017 שנים מחבר זה "משהו כמו זה" כי לא כתבתי מאיפה עד איפה יעשה רנדום (גבול עליון ותחתון או איך שלא קוראים לזה)נגיד אני מדפיסConsole.WriteLine(num1+"and "+num2);זה תמיד מדפיס (רק בתוכנית,לא בF11) 2 and 2 או 14 and 14 אבל אף פעם num1 ו2 לא יוצאים שונים!! למה???נ.בנזכרתי שפעם עשיתי תוכנה שהדפיסה ל100 מספרים רנדומלים [לולאת for] את השורש שלהם ותמיד המסך היה נראה משהו כמו:44444441.11.11.11.11.11.11.11.1999999999וכו' הבנת את העיקרון... יש פתרון או ניחוש מה לא בסדר??תודה על העזרה!!
פורסם 2007 בדצמבר 1017 שנים Random rnd = new Random();Random rnd2 = new Random();num1=rnd.Next();num2=rnd2.Next();!??!לזה אתה מתכוון?
פורסם 2007 בדצמבר 1017 שנים מחבר לא...בגדול מדובר על מתודה\פונקציה\איך שלא תקרא לזה שמביאה מס' רנדומליRandom rnd = new Random();num=rnd.Next();return num;ובMainnum1=שם המתודה;num2=שם המתודה;יש רק Random rnd = new Random(); (כך אמור להיות)אבל רק כשאני עושה F5 או Shift F5 נאם1 ו2 שווים בF11 הם יוצאים 2 מספרים שונים..עזרה??? ???
פורסם 2007 בדצמבר 1017 שנים או, עכשיו אתה מפרט את השטות שעשית, מקודם זה נראה כאילו עשית משהו הגיוני וקרה משהו שלא אמור לקרות.מה שקורה כשאתה עושה new Random הוא מייצר את המספרים לפי seed של השעון הנוכחי ברזולוציה של מילישניות אני מניח. כאשר אתה מפעיל את המתודה בתוכנית רגילה פעמיים ברצפיות, השעון לא הספיק להתעדכן ולכן הוא מייצר אותם מספרים. כשאתה עוצר את התוכנית, הוא מתעדכן ולכן בין הקריאות זה מסתדר. אם אתה רוצה לעשות את זה בצורה עקומה כזו (לא כל דבר צריך מתודה), תדאג שהמתודה והמתשנה הנ"ל יהיו סטטאטים.
פורסם 2007 בדצמבר 1017 שנים מחבר זה במתודה כי זה מקבל מספר ולפי המספר הזה קובע את הגבולות העליונים והתחתונים(או איך שלא תקרא לתחום של ה)ראנדוםואפשר פירוט על "תדאג שהמתודה והמתשנה הנ"ל יהיו סטטאטים."?? מה צריך לעשות??תודה על העזרה!!(אם תוכל לנסות להסביר קצת מה "שה new Random הוא מייצר את המספרים לפי seed של השעון הנוכחי ברזולוציה של מילישניות אני מניח" זה אומר זה יהיה נחמד לידע כללי... אבל השאלה למעלה יותר חשובה!)
פורסם 2007 בדצמבר 1017 שנים אם זה ככה, תגדיר את המשתנה rnd פשוט לא בתוך המתודה אלא בתוך המחלקה שמכילה אותה, ותדאג לאתחל אותו פעם אחת בלבד (איפה שאתה מגדיר אותו).מחשב מייצר מספרים פסודו-רנדמאלים (לא אמיתיים, כי הוא פשוט לא יכול). הוא לוקח מספר נתון ומפעיל עליו כמה פעולות מתמטיות שיוצרות את המספר הבא וכו' וכו' וכו'. אתה צריך לתת לו ערך ראשוני ממנו הוא יוצר את הסידרה של מספרים. את הערך אתה יכול לתת כשאתה מאתחל את המחלקה, או אם אתה לא נותן (כמו שאתה עושה עכשיו) אז הוא משתמש בשעון של המחשב בשביל ליצור זאת (וזה כדי שיהיה סידרה שונה של מספרים בכל הפעלה של התוכנית). אבל השעון שהוא משתמש לא מתעדכן בקצב מספיק מהיר כשאתה קורא לזה פעמיים רצוף, ואז זה יוצר לך אותו מספר ראשוני ואת אותה סדרה בעקבות כך.
פורסם 2007 בדצמבר 1017 שנים מחבר "אם זה ככה, תגדיר את המשתנה rnd פשוט לא בתוך המתודה אלא בתוך המחלקה שמכילה אותה, ותדאג לאתחל אותו פעם אחת בלבד (איפה שאתה מגדיר אותו)." לא הבנתי מה זה לאתחל את המשתנה ואיפה אני אמור להגדיר אותו?? ניסיתי מעל למתודה לא עבד, ניסיתי בתוך הMain לא עבד, אפשר דוגמא למה לעשות?? תודה על העזרה!!!!
פורסם 2007 בדצמבר 1017 שנים מאיפה לי לדעת את הסינטקס של השפה שלך.. תרשום פה את כל הקוד נראה איך לתקן.
פורסם 2007 בדצמבר 1017 שנים מחבר public static int Name(int l) { int num; Random ran = new Random(); num = ran.Next(l * 8 - 2, l * 9); return num; }ובMain num1=Name(l);num2=Name(l);זה בערך הכל...אבל אני לא חושב שהבעיה היא בקוד כי אם כן אז איך בF11 (שלב אחרי שלב) זה עובד כמו שצריך??תודה על העזרה המהירה!!
פורסם 2007 בדצמבר 1017 שנים איך ? בעיקר על ידי חוסר רצון/יכולת להבין איך דברים פועלים והתעלמות ממה שנכתב פה. (גם הסברתי למה כבר, וגם אמרתי את כל הקוד, שזה אומר את הגדרת המחלקה ש Name מוגדרת בתוכה). אבל כנראה שאתה כבר מקרה אבוד...תזיז את השורהRandom ran = new Random();למחוץ הגדרת המתודה (אך עדיין תשאיר אותה בתוך המחלקה שלה).אני רואה שהמתודה היא static אז גם המשתנה ran חייב להיות.
פורסם 2007 בדצמבר 1017 שנים מחבר מצטער אני באמת לא הצלחתי להבין את ההסבר שלך... לפי מה שכן הבנתי ניסית לעשות class Program { Random ran = new Random(); public static int NumLevel(int level) { זה לא נחשב "תזיז את השורה Random ran = new Random(); למחוץ הגדרת המתודה (אך עדיין תשאיר אותה בתוך המחלקה שלה)."?? כשאני עושה את זה זה רושם Error ש: An object reference is required for the nonstatic field, method, or property 'NameOfProject.Program.ran' עזרה??? (מצטער שאני קשה, אני יחסית מתחיל בזה...) תודה על הסבלנות!
פורסם 2007 בדצמבר 1017 שנים אמרתי (וגם הקומפיילר אמר לך) שהמשתנה ran צריך להיות מוגדר כ static גם כן. ממליץ לך כשאתה נתקל בדברים כאלו לנסות ללמוד מהם (למשל משתנים/מתודות סטטיות), אפילות ברמה שיטחית.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.