JavaRush /وبلاگ جاوا /Random-FA /یک عدد تصادفی در یک محدوده مشخص ایجاد کنید
L2CCCP
مرحله

یک عدد تصادفی در یک محدوده مشخص ایجاد کنید

در گروه منتشر شد
سلام در طرف دیگر صفحه. هر یک از ما دیر یا زود با نیاز به تولید یک عدد تصادفی در یک محدوده معین روبرو می شویم، خواه یک عدد واقعی یا یک عدد صحیح باشد. تولید یک عدد تصادفی در یک محدوده معین - 1برای چی؟ در واقع، این مهم نیست، می‌تواند تابعی برای محاسبه شانس ایجاد یک رویداد، گرفتن یک ضریب تصادفی یا هر چیز دیگری باشد. بنابراین، ما متوجه شدیم که چرا این مورد نیاز است، یعنی برای هر چیزی :) در واقع، روش های زیادی برای به دست آوردن یک عدد شبه تصادفی وجود دارد، اما من یک مثال با کلاس، Mathیعنی متد، می زنم random(). ما چه داریم؟ فراخوانی متد Math.random()یک عدد واقعی شبه تصادفی ( double) را از محدوده باز می گرداند [0;1)، یعنی از 0 تا 1 به استثنای 1، یعنی حداکثر عدد در محدوده 0.99999999999 است... بسیار خوب، یک عدد شبه تصادفی گرفتیم، اما اگر به محدوده خودمان نیاز داشته باشیم چه؟ به عنوان مثال، آیا به یک عدد شبه تصادفی از محدوده [0;100) نیاز داریم؟ ما کد را می نویسیم:
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(بسته به محدوده هایی که استفاده می کنید) تبدیل کنیم. ما کد را می نویسیم:
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);
}
توجه: همانطور که می بینید، متغیر max با فرم پیشوند افزایش می یابد. (اگر نمی دانید این چیست، به شما توصیه می کنم مقاله من را بخوانید ) عالی است، ما به آنچه می خواستیم رسیدیم، اما اگر به محدوده ای از 0 نیاز نداشته باشیم، برای مثال [10;75] کد را می نویسیم:
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;
}
تجزیه کد از متد rnd:

Минимальное число диапазона = 10;
Максимальное число диапазона = 75;
max -= min; // Отнимаем от максимального значения минимальное для получения множителя псевдослучайного вещественного числа.
حداکثر عدد پس از محاسبه 65 است . عدد واقعی شبه تصادفی (به عنوان مثال) 0.18283417347179454 است (با تماس به دست آمد Math.random()). حداکثر عدد قبل از ضرب با یک فرم پیشوند افزایش می یابد. حداکثر عدد اکنون 66 است. 0.18283417347179454 را در 66 ضرب کنید. حاصل ضرب 12.06705544913844 است. حاصل ضرب حداکثر عدد در یک عدد واقعی شبه تصادفی را به یک عدد صحیح تبدیل می کنیم int. ما حداقل عدد را به نتیجه تبدیل شده اضافه می کنیم که برابر با 12 است. نتیجه را برمی گردانیم: 22 همانطور که از تجزیه و تحلیل مشاهده می شود، حتی اگر عدد واقعی شبه تصادفی برابر با صفر باشد، ما حداقل خود را در نتیجه برمی گردانیم. از جمع کردن حداقل عدد ما با حاصل ضرب. امیدوارم این مطلب برای شما مفید و آموزنده بوده باشد. در تسلط بر جاوا موفق باشید ؛) چند مقاله دیگر: افزایش و کاهش چیست اپراتور تقسیم مدول
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION