פורסם 2009 בינואר 2716 שנים import java.util.*;class probability{ public static void main(String[]args) { int[]a = new int[7]; for(int i=0; i<a.length; i++) a[i]=0; for(int j=0; j<1000000; j++) a[(int)Math.random()*6]++; for(int k=1; k<a.length; k++) System.out.println(a[k] +" "+k); }} המטרה היא לבצע מיליון איטרציות של "הטלת קובייה" בעצם ולבדוק את היחס שיוצא בין כל מספר (מ1 עד 6). מה שבעצם עשיתי בשורה הזו: a[(int)Math.random()*6+1]++; זה להוסיף לתא ה{מספר אקראי מ1 עד6} עוד אחד. בעצם דרך השורה הזאת אני מונה במערך את מספר הפעמים שיצא כל מספר מ1-6. למה בסוף הפלט הוא כזה: 1000000 10 20 30 40 50 6 כלומר כל הערכים נכנסו לתא הראשון משום מה. תודה
פורסם 2009 בינואר 2716 שנים רנדום מחזיר מספר מ-0 עד 1. נדמה לי שכשאתה עושה קאסטינג ל-int אז אתה חותך את השבר ואז אתה תמיד מקבל 0.תנסה לכתוב את זה ככה:a[((int)(Math.random()*6))+1]++;
פורסם 2009 בינואר 2716 שנים מחבר וואו אני פשוט אף פעם לא מסוגל לפרסם את הפוסטים שלי שקשורים בג'אווה בשפות תכנות תעבירו בבקשה לגבי הפוסט למעלה ^ צודק, כנראה שהשורה הזו תמיד מחזירה 1. בכל אופן אני זוכר שיש דרך, דרך הmath.random ליצור מספר אקראי, אינטג'ר בטווח מסויים - כנראה שפשוט לא עשיתי את זה טוב. מישהו יודע איך? עריכה: אוקיי, עכשיו ראיתי את מה שרשמת. תודה רבה, זה עבד וסתם בשביל הקטע, התוצאות: 166707 1 166550 2 166631 3 167429 4 165870 5 166813 6
פורסם 2009 בינואר 2816 שנים בכל אופן אני זוכר שיש דרך, דרך הmath.random ליצור מספר אקראי, אינטג'ר בטווח מסויים - כנראה שפשוט לא עשיתי את זה טוב. הקוד לא עבד לך מסיבה פשוטה - ההמרה ל-int התבצעה לפני הכפל ב-6. ה-random הגריל מספר בין 0 ל-1, שאז הומר ל-int (והפך ל-0), ולכן תמיד קיבלת 1.אגב, יש סיבה שאתה משתמש במערך בגודל 7 ומתעלם מהתא הראשון (במקום פשוט להשתמש במערך בגודל 6)?
פורסם 2009 בינואר 2816 שנים תיצור אובייקט מסוג RANDOMלאובייקט הזה יש מתודה שנקראת NEXT שמקבל כ INT את הערך המקסימלי . אתה צריך להשתמש ב 5 כערך מקסימלי ולהוסיף אחד לתוצאה כך שהערכים ינועו בין 1 ו 6
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.