JavaRush /Java блогу /Random-KY /Берилген диапазондо кокус санды жаратыңыз
L2CCCP
Деңгээл

Берилген диапазондо кокус санды жаратыңыз

Группада жарыяланган
Салам экрандын башка тарабында. Ар бирибиз, эртеби-кечпи, берилген диапазондо, мейли ал чыныгы сан же бүтүн сан болсун, кокус санды түзүү зарылдыгына туш болобуз. Берилген диапазондо кокус санды түзүү - 1Эмне үчүн? Чынында, бул маанилүү эмес, бул кандайдыр бир окуяны козгоо, кокустук көбөйткүчтү же башкаларды алуу мүмкүнчүлүгүн эсептөө үчүн функция болушу мүмкүн. Ошентип, биз бул эмне үчүн керек экенин түшүндүк, тактап айтканда, кандайдыр бир нерсе үчүн :) Чындыгында, псевдо-кокустук сандарды алуу үчүн көптөгөн ыкмалар бар, бирок мен класс менен мисал келтирем Math, тактап айтканда метод random(); Бизде эмне бар? Методду чакыруу диапазондон Math.random()псевдококустук реалдуу санды ( ) кайтарат , башкача айтканда, 0дөн 1ге чейинки 1ди кошпогондо, бул диапазондогу максималдуу сан 0,99999999999 дегенди билдирет... Макул, биз псевдококустук санды алдык, бирок Бизге өзүбүздүн диапазонубуз керек болсочы? Мисалы, бизге [0;100) диапазондогу псевдордук сан керекпи? Биз codeду жазабыз:double[0;1)
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] диапазонундагы кокус санды алуу үчүн биз maxөзүбүздүн санга 1ди кошуп, аны intже сыяктуу бүтүн санга айландырышыбыз керек long(сиз колдоно турган диапазондорго жараша). Биз codeду жазабыз:
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] Биз codeду жазабыз:
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;
}
Методдон codeду талдоо rnd:

Минимальное число диапазона = 10;
Максимальное число диапазона = 75;
max -= min; // Отнимаем от максимального значения минимальное для получения множителя псевдослучайного вещественного числа.
Эсептөөдөн кийинки максималдуу сан 65. Псевдо-кокустук реалдуу сан (мисалы) 0,18283417347179454 (Чалуу аркылуу алынды Math.random()). Көбөйтүүнүн алдында максималдуу сан префикс формасы менен көбөйтүлгөн. Максималдуу сан азыр 66. 0,18283417347179454тү 66га көбөйтүңүз. Көбөйтүүнүн натыйжасы 12,06705544913844. Биз максималдуу санды псевдордук реалдуу санга көбөйтүүнүн натыйжасын бүтүн сан түрүнө айлантабыз int. Трансформацияланган натыйжага 12ге барабар болгон минималдуу санды кошобуз. Натыйжаны кайтарабыз: 22 Талдоодон көрүнүп тургандай, псевдококустук реалдуу сан нөлгө барабар болсо да, натыйжада минимумубузду кайтарабыз. биздин минималдуу саныбызды көбөйтүүнүн натыйжасы менен кошуу. Бул сиз үчүн пайдалуу жана маалыматтык болду деп үмүттөнөм. Java өздөштүрүүгө ийгorк;) Менин дагы бир нече макалам: Көбөйтүү жана азайтуу деген эмне? Модулду бөлүү оператору
Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION