JavaRush /Блоги Java /Random-TG /Дар доираи дода рақами тасодуфӣ тавлид кунед
L2CCCP
Сатҳи

Дар доираи дода рақами тасодуфӣ тавлид кунед

Дар гурӯҳ нашр шудааст
Салом дар тарафи дигари экран. Ҳар яке аз мо, дер ё зуд, ба зарурати тавлиди рақами тасодуфӣ дар диапазони додашуда дучор мешавад, хоҳ он рақами воқеӣ ё бутун бошад. Истеҳсоли рақами тасодуфӣ дар диапазони додашуда - 1Барои чӣ? Дар асл, ин муҳим нест, он метавонад функсия барои ҳисоб кардани имконияти ангезиши ягон ҳодиса, гирифтани мултипликатори тасодуфӣ ё ягон чизи дигар бошад. Ҳамин тавр, мо фаҳмидем, ки чаро ин лозим аст, маҳз барои ҳама чиз :) Дар асл, усулҳои зиёде барои ба даст овардани рақами псевдо-тасодуфӣ мавҷуданд, аммо ман бо синф мисол меорам Math, яъне усули random(); Мо чӣ дорем? Даъват ба усул Math.random()рақами воқеии псевдо-тасодуфӣ ( double)-ро аз диапазон бармегардонад [0;1), яъне аз 0 то 1 ба истиснои 1, яъне шумораи максималӣ дар диапазон 0,99999999999 аст... Хуб, мо рақами псевдотасодуфӣ гирифтем, аммо чӣ мешавад, агар ба мо доираи худамон лозим бошад? Масалан, оё ба мо рақами тасодуфӣ аз диапазони [0;100) лозим аст? Мо codeро менависем:
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(вобаста ба диапазони шумо истифода мебаред). Мо 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;
}
Таҳлor code аз усул 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