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. Nä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
GO TO FULL VERSION