JavaRush /Blog Jawa /Random-JV /Nggawe nomer acak ing sawetara tartamtu
L2CCCP
tingkat

Nggawe nomer acak ing sawetara tartamtu

Diterbitake ing grup
Hello ing sisih liyane layar. Sembarang saka kita, cepet utawa mengko, nemokke perlu kanggo generate nomer acak ing sawetara tartamtu, dadi nomer nyata utawa integer. Ngasilake nomer acak ing sawetara tartamtu - 1Kanggo apa? Ing kasunyatan, iki ora penting, bisa dadi fungsi kanggo pitungan kasempatan kanggo micu sawetara acara, njupuk multiplier acak, utawa liyane. Dadi, kita ngerti kenapa iki dibutuhake, yaiku kanggo apa wae :) Nyatane, ana akeh cara kanggo entuk nomer pseudo-acak, nanging aku bakal menehi conto karo kelas Math, yaiku metode random(); Apa sing kita duwe? Nelpon metode Math.random()ngasilake nomer nyata pseudo-acak ( double) saka sawetara [0;1), yaiku, saka 0 nganti 1 ora kalebu 1, sing tegese jumlah maksimum ing sawetara yaiku 0,99999999999... Oke, kita entuk nomer pseudo-acak, nanging kepiye yen kita butuh jangkauan dhewe? Contone, apa kita butuh nomer pseudorandom saka kisaran [0;100)? Kita nulis kode:
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;
}
Ternyata ora ala, nanging max(ing kasus kita) isih ora bakal entuk. Kanggo entuk nomer acak ing kisaran [0;100] kita kudu nambah max1 kanggo kita banjur ngowahi dadi integer kaya intutawa long(gumantung saka kisaran sing bakal digunakake). Kita nulis kode:
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);
}
Cathetan: Kaya sing sampeyan ngerteni, variabel maksimal ditambah karo wangun awalan. (Yen sampeyan ora ngerti apa iki, aku menehi saran supaya maca artikelku ) Apik, kita entuk apa sing dikarepake, nanging yen kita butuh sawetara ora saka 0, nanging contone [10;75] Kita nulis kode:
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;
}
Parsing kode saka metode rnd:

Минимальное число диапазона = 10;
Максимальное число диапазона = 75;
max -= min; // Отнимаем от максимального значения минимальное для получения множителя псевдослучайного вещественного числа.
Jumlah maksimum sawise pitungan 65. Nomer nyata pseudo-acak (contone) 0,18283417347179454 (Dipikolehi kanthi nelpon Math.random()). Jumlah maksimum ditambah karo wangun awalan sadurunge multiplikasi. Jumlah maksimal saiki 66. Tikel 0.18283417347179454 karo 66. Asil perkalian yaiku 12.06705544913844. Kita ngowahi asil multiply nomer maksimum dening nomer nyata pseudorandom kanggo jinis integer int. Kita nambahake angka minimal menyang asil sing diowahi sing padha karo 12. Kita ngasilake asil: 22 Kaya sing bisa dideleng saka analisis, sanajan nomer nyata pseudo-acak padha karo nol, kita bakal ngasilake minimal minangka asil. nambah nomer minimal kita kanthi asil perkalian. Mugi iki migunani lan informatif kanggo sampeyan. Good luck ing mastering Java ;) Saperangan liyane saka artikelku: Apa incrementing lan decrementing Operator divisi modulo
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION