JavaRush /בלוג Java /Random-HE /צור מספר אקראי בטווח נתון
L2CCCP
רָמָה

צור מספר אקראי בטווח נתון

פורסם בקבוצה
שלום בצד השני של המסך. כל אחד מאיתנו נתקל במוקדם או במאוחר בצורך ליצור מספר אקראי בטווח נתון, בין אם זה מספר ממשי או מספר שלם. יצירת מספר אקראי בטווח נתון - 1בשביל מה? למעשה, זה לא חשוב, זה יכול להיות פונקציה לחישוב הסיכוי להפעיל אירוע כלשהו, ​​לקבל מכפיל אקראי, או כל אחר. אז, הבנו למה זה נחוץ, כלומר לכל דבר :) למעשה, יש הרבה שיטות להשגת מספר פסאודו אקראי, אבל אני אתן דוגמה עם המחלקה Math, כלומר השיטה random(); מה יש לנו? קריאה לשיטה Math.random()מחזירה מספר ממשי פסאודו-אקראי ( double) מהטווח [0;1), כלומר מ-0 עד 1 למעט 1, כלומר המספר המקסימלי בטווח הוא 0.99999999999... אוקיי, קיבלנו מספר פסאודו-אקראי, אבל מה אם נצטרך טווח משלנו? לדוגמה, האם אנו זקוקים למספר פסאודו-אקראי מהטווח [0;100)? אנחנו כותבים את הקוד:
public static void main(String... args)
{
	final double max = 100.; // Максимальное число для диапазона от 0 до max
	final double rnd = rnd(max);

	System.out.println("Псевдослучайное вещественное число: " + rnd);
}

/**
 * Метод получения псевдослучайного вещественного числа от 0 до max (исключая max);
 */
public static double rnd(final double max)
{
	return Math.random() * max;
}
זה יצא לא רע, אבל max(במקרה שלנו) עדיין לא נקבל את זה. על מנת לקבל מספר אקראי בטווח [0;100] עלינו להוסיף max1 למספר שלנו ולאחר מכן להמיר אותו למספר שלם כמו intאו long(בהתאם לטווחים שבהם תשתמש). אנחנו כותבים את הקוד:
public static void main(String... args)
{
	final int max = 100; // Максимальное число для диапазона от 0 до max
	final int rnd = rnd(max);

	System.out.println("Псевдослучайное целое число: " + rnd);
}

/**
 * Метод получения псевдослучайного целого числа от 0 до max (включая max);
 */
public static int rnd(int max)
{
	return (int) (Math.random() * ++max);
}
הערה: כפי שאתה יכול לראות, המשתנה המקסימלי הוגדל על ידי טופס הקידומת. (אם אתה לא יודע מה זה, אני ממליץ לך לקרוא את המאמר שלי ) מצוין, השגנו את מה שרצינו, אבל אם אנחנו צריכים טווח לא מ-0, אלא למשל [10;75] נכתוב את הקוד:
public static void main(String... args)
{
	final int min = 10; // Минимальное число для диапазона
	final int max = 75; // Максимальное число для диапазона
	final int rnd = rnd(min, max);

	System.out.println("Псевдослучайное целое число: " + rnd);
}

/**
 * Метод получения псевдослучайного целого числа от min до max (включая max);
 */
public static int rnd(int min, int max)
{
	max -= min;
	return (int) (Math.random() * ++max) + min;
}
ניתוח הקוד מהשיטה rnd:

Минимальное число диапазона = 10;
Максимальное число диапазона = 75;
max -= min; // Отнимаем от максимального значения минимальное для получения множителя псевдослучайного вещественного числа.
המספר המקסימלי לאחר החישוב הוא 65. המספר האמיתי הפסאודו-אקראי (לדוגמה) הוא 0.18283417347179454 (הושג על ידי קריאה Math.random()). המספר המרבי הוגדל עם צורת קידומת לפני הכפל. המספר המרבי הוא כעת 66. הכפל 0.18283417347179454 ב-66. התוצאה של הכפל היא 12.06705544913844. אנו ממירים את התוצאה של הכפלת המספר המרבי במספר ממשי פסאודו אקראי לסוג מספר שלם int. נוסיף את המספר המינימלי לתוצאה המומרת ששווה ל-12. נחזיר את התוצאה: 22 כפי שניתן לראות מהניתוח, גם אם המספר האמיתי הפסאודו-אקראי שווה לאפס, נחזיר את המינימום שלנו כתוצאה מכך. של חיבור המספר המינימלי שלנו עם התוצאה של הכפל. אני מקווה שזה היה שימושי ואינפורמטיבי עבורך. בהצלחה בשליטה ב-Java ;) עוד כמה מאמרים שלי: מה זה הגדלה והקטנה האופרטור חלוקה מודולו
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION