עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

ג'אווה - למה הסקריפט הבא לא עובד טוב?

Featured Replies

פורסם

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 1
0 2
0 3
0 4
0 5
0 6

כלומר כל הערכים נכנסו לתא הראשון משום מה.

תודה :)

פורסם

רנדום מחזיר מספר מ-0 עד 1. נדמה לי שכשאתה עושה קאסטינג ל-int אז אתה חותך את השבר ואז אתה תמיד מקבל 0.

תנסה לכתוב את זה ככה:


a[((int)(Math.random()*6))+1]++;

פורסם
  • מחבר

וואו אני פשוט אף פעם לא מסוגל לפרסם את הפוסטים שלי שקשורים בג'אווה בשפות תכנות :kopfpatsch:

תעבירו בבקשה

לגבי הפוסט למעלה ^ צודק, כנראה שהשורה הזו תמיד מחזירה 1.

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

מישהו יודע איך?

עריכה: אוקיי, עכשיו ראיתי את מה שרשמת. תודה רבה, זה עבד :)

וסתם בשביל הקטע, התוצאות:

166707 1

166550 2

166631 3

167429 4

165870 5

166813 6

פורסם

עריכה: טעיתי קודם - הצורה שכתבתי לך קודם היא הצורה הנכונה.

פורסם

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

הקוד לא עבד לך מסיבה פשוטה - ההמרה ל-int התבצעה לפני הכפל ב-6. ה-random הגריל מספר בין 0 ל-1, שאז הומר ל-int (והפך ל-0), ולכן תמיד קיבלת 1.

אגב, יש סיבה שאתה משתמש במערך בגודל 7 ומתעלם מהתא הראשון (במקום פשוט להשתמש במערך בגודל 6)?

פורסם

זה פורום תוכנה ולא תיכנות. :)

מועבר למקום המתאים.

פורסם

תיצור אובייקט מסוג RANDOM

לאובייקט הזה יש מתודה שנקראת NEXT שמקבל כ INT

את הערך המקסימלי . אתה צריך להשתמש ב 5 כערך מקסימלי ולהוסיף אחד לתוצאה כך שהערכים ינועו

בין 1 ו 6

ארכיון

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

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.