JavaRush /Java Blog /Random-TK /Belli bir aralykda tötänleýin san dörediň
L2CCCP
Dereje

Belli bir aralykda tötänleýin san dörediň

Toparda çap edildi
Salam ekranyň beýleki tarapynda. Islendik birimiz, iru-giç belli bir aralykda tötänleýin san döretmek zerurlygy bilen ýüzbe-ýüz bolýarys, hakyky san bolsun ýa-da bitewi san. Berlen aralykda tötänleýin san döretmek - 1Näme üçin? Aslynda bu möhüm däl, käbir hadysany başlatmak, tötänleýin köpeldiji ýa-da başga bir zady almak mümkinçiligini hasaplamak üçin bir funksiýa bolup biler. Şeýlelik bilen, munuň näme üçin zerurdygyny kesgitledik, ýagny islendik zat üçin :) Aslynda, pseudo-tötänleýin san almak üçin köp usul bar, ýöne synp bilen mysal bererin Math, ýagny usul random(); Bizde näme bar? Usula jaň etmek, Math.random()pseudo-tötänleýin hakyky belgini ( double) diapazondan [0;1), ýagny 1-den başga 0-dan 1-e çenli gaýtarýar, bu aralykdaky iň köp san 0.99999999999 diýmekdir ... Bolýar, pseudo-tötänleýin san aldyk, ýöne öz aralygymyz gerek bolsa näme etmeli? Mysal üçin, bize [0; 100) diapazondan ýasama san gerekmi? Kody ýazýarys:
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;
}
Erbet däldi, ýöne max(biziň ýagdaýymyzda) henizem alyp bilmeris. [0; 100] diapazonda tötänleýin san almak üçin, maxözümize 1 goşmaly, soňra bolsa intýa-da long(ulanjak aralyklaryňyza baglylykda) bitewi bitewi sanlara öwürmeli. Kody ýazýarys:
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);
}
Bellik: Görşüňiz ýaly, iň ýokary üýtgeýji prefiks formasy bilen ýokarlandy. (Munuň nämedigini bilmeseňiz, makalamy okamagyňyzy maslahat berýärin ) Gowy, islän zadymyzy aldyk, ýöne 0-dan däl-de, aralyk gerek bolsa, mysal üçin [10; 75] Kody ýazýarys:
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;
}
Kody usuldan bölmek rnd:

Минимальное число диапазона = 10;
Максимальное число диапазона = 75;
max -= min; // Отнимаем от максимального значения минимальное для получения множителя псевдослучайного вещественного числа.
Hasaplamadan soň iň köp san 65. pseudo-tötänleýin hakyky san (mysal üçin) 0.18283417347179454 (Çagyryş arkaly alyndy Math.random()). Iň köp san köpeltmezden ozal prefiks görnüşi bilen köpeldildi. Iň köp san indi 66. 0.18283417347179454-ni 66-a köpeldiň. Köpeltmegiň netijesi 12.06705544913844. Iň köp sanlary ýasama hakyky san bilen köpeltmegiň netijesini bitewi görnüşe öwürýäris int. Üýtgedilen netijä iň az san 12-e deňdiris. Netijäni yzyna gaýtaryp berýäris: 22 Derňewden görnüşi ýaly, pseudo-tötänleýin hakyky san nola deň bolsa-da, netijede iň pes mukdarymyzy yzyna gaýtaryp bereris köpeltmegiň netijesi bilen iň az sanymyzy goşmak. Munuň siziň üçin peýdaly we manylydygyna umyt edýärin. Java-ny özleşdirmekde üstünlik arzuw ediň;) moreene-de birnäçe makalam: Modulo bölüminiň operatory köpelýär we azalýar
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION