המחלקה Random
מהי המחלקה Random?
Random היא מחלקה מובנית שמייצרת מספרים אקראיים. שימושית למשחקים, סימולציות, בדיקות,
ועוד.
ייבוא
import java.util.Random;
יצירה
Random rand = new Random();
מספר שלם אקראי
מספר בטווח [0, n) - כולל 0, לא כולל n
int number = rand.nextInt(10); // 0..9
מספר בטווח [min, max]
כדי לקבל מספר בין 1 ל-100 (כולל):
int number = rand.nextInt(100) + 1; // 1..100
נוסחה כללית - מספר בטווח [min, max]:
int number = rand.nextInt(max - min + 1) + min;
מספר עשרוני אקראי
בין 0.0 ל-1.0 (לא כולל 1.0)
double number = rand.nextDouble(); // 0.0..0.999...
בטווח [min, max]
double number = rand.nextDouble() * (max - min) + min;
טיפוסים נוספים
float floatNum = rand.nextFloat(); // 0.0..1.0
long longNum = rand.nextLong(); // כל מספר long
boolean flag = rand.nextBoolean(); // true או false
דוגמה: הטלת קובייה
import java.util.Random;
public class Dice {
public static void main(String[] args) {
Random rand = new Random();
for (int i = 0; i < 5; i++) {
int roll = rand.nextInt(6) + 1; // 1..6
System.out.println("הטלה " + (i + 1) + ": " + roll);
}
}
}
דוגמה: משחק ניחוש מספר
import java.util.Random;
import java.util.Scanner;
public class GuessGame {
public static void main(String[] args) {
Random rand = new Random();
Scanner scanner = new Scanner(System.in);
int secret = rand.nextInt(100) + 1;
int guess;
int attempts = 0;
System.out.println("ניחש מספר בין 1 ל-100:");
do {
guess = scanner.nextInt();
attempts++;
if (guess < secret) System.out.println("גדול יותר!");
else if (guess > secret) System.out.println("קטן יותר!");
else System.out.println("צדקת! מספר נסיונות: " + attempts);
} while (guess != secret);
scanner.close();
}
}
Seed - זרע אקראיות
אפשר להעביר seed (זרע) ל-Random כדי לקבל תמיד את אותה סדרה אקראית. שימושי לבדיקות:
Random rand = new Random(42); // seed קבוע
int a = rand.nextInt(100); // תמיד יחזיר אותו מספר
int b = rand.nextInt(100); // תמיד יחזיר אותו מספר
Math.random - חלופה פשוטה
אם אתם לא רוצים לייבא את Random, יש גם:
double number = Math.random(); // 0.0..1.0
int diceRoll = (int)(Math.random() * 6) + 1; // 1..6
Math.random() משתמש ב-Random מתחת לפני השטח, אז בסופו של דבר זה אותו דבר.
מתי להשתמש בכל אחד
- Random - כשצריך לייצר הרבה מספרים אקראיים, או שליטה על ה-seed
- Math.random - לצורך מהיר, חד-פעמי, בלי לייבא שום דבר
בדקו את עצמכם
נסו לענות לבד לפני שאתם פותחים את התשובה.
-
מה הטווח של
random.nextInt(10)?הצגת התשובה
תשובה ד. nextInt(n) מחזיר מספר מ-0 ועד n-1, כלומר 0 עד 9.
-
איך מקבלים מספר אקראי בין 1 ל-6 (קובייה)?
הצגת התשובה
תשובה ד. nextInt(6) נותן 0-5, ו-+1 מזיז ל-1-6.