CodeGym /وبلاگ جاوا /Random-FA /کلاس Java.util.Random
John Squirrels
مرحله
San Francisco

کلاس Java.util.Random

در گروه منتشر شد

کلاس java.util.Random در جاوا چیست؟

کلاس java.util.Random برای تولید اعداد شبه تصادفی استفاده می شود. روش های پیاده سازی شده توسط این کلاس برای تولید انواع داده های تصادفی مختلف مانند int، double و float استفاده می شود. بنابراین دو نوع عمده از اعداد تصادفی وجود دارد، اعداد تصادفی آماری و اعداد شبه تصادفی . اعداد تصادفی آماری (مانند اعداد تصادفی ساده در ریاضیات)، مجموعه ای از مقادیر هستند که الگوی قابل تشخیصی ندارند. به عنوان مثال، انداختن یک تاس 10 بار، هر بار یک عدد تصادفی ایجاد می کند که هیچ الگوی قابل تشخیصی ندارد.

اعداد شبه تصادفی چیست؟

مجموعه ای از مقادیر است که از نظر آماری تصادفی هستند اما نقطه شروع مشخصی دارند . در جاوا هر عدد شبه تصادفی از طریق یک الگوریتم تولید می شود. بنابراین معمولاً هر بار که java.util.Random یک عدد تصادفی تولید می کند، یک چرخه تکرار می شود. یک مولد اعداد تصادفی در جاوا اعداد تصادفی آماری را تولید می‌کند اما نقطه شروع مشخصی دارد که توسط یک الگوریتم تولید می‌شود. این باعث می شود آن ارزش ها شبه تصادفی باشند.

آیا کلاس java.util.Random از نظر رمزنگاری ناامن است؟

از نظر رمزنگاری ناامن است زیرا دارای الگوریتم هایی است که برای تولید اعداد تصادفی پیاده سازی شده است. در نتیجه فردی که بداند الگوریتم چگونه کار می کند، دسترسی به داده های حساس شما زمان زیادی را نمی گیرد. بنابراین اگر با برخی از برنامه های امنیتی کار می کنید، برای ایمن سازی برخی داده های حساس نیاز دارید، یا نیاز به ایجاد رمزهای عبور تصادفی دارید، بهتر است از استفاده از این کلاس خودداری کنید. در بسیاری از موارد مانند ایجاد یک عدد تصادفی برای تاس انداختن خود در لودو، قمار، انجام یک بازی پرتاب یا سایر مناطقی که نتیجه مورد نظر شما غیرقابل پیش بینی است مفید است.

اعلامیه روش

برای استفاده از متدهای این کلاس باید ابتدا آن را از بسته به عنوان وارد کنید
import java.util.Random;
پس از وارد کردن، باید یک شی از این کلاس ایجاد کنید
Random randomNumbers = new Random();
در ادامه، اجازه دهید به مثال‌های مختلف برای استفاده از کلاس java.util.Random نگاهی بیندازیم .

مثال

import java.util.Random;

public class RandomClassExample1 {

	public static void main(String[] args) {

		// create random object
		Random randomNumbers = new Random();

		System.out.println("----------Random Boolean---------" );
		/*
		 * Returns the next pseudo random boolean value which
		 * may be used in a toss for a match
		 */
		boolean value = randomNumbers.nextBoolean();
		System.out.println("The random boolean value is: " + value);

		/*
		 * Returns the next pseudo random integer value between 0 and 5
		 * because if we use '6' then, it will give random numbers from 0 to 6
		 * hence incrementing it by 1 you can use it as a result of a dice roll
		 */
		System.out.println("\n----------Random Integer---------" );
		System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
		System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
		System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
		System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );
		System.out.println("Die Roll: " + (randomNumbers.nextInt(6)+1) );

		// return the next pseudo random long value
		Long val = randomNumbers.nextLong();
		System.out.println("\n----------Random Long---------" );
		System.out.println("Random Long value: " + val);

		/*
		 * Generates random bytes and puts them in an array, which you can for some
		 * desired unpredictable result that is summing all the values in the array
		 */

		System.out.println("\n----------Random Bytes---------" );
		byte[] bytes = new byte[8];
		randomNumbers.nextBytes(bytes);

		System.out.print("These are the random bytes = [ ");
		for (int i = 0; i < bytes.length; i++) {
			System.out.printf("%d ", bytes[i]);
		}
		System.out.println("]");
	}

}

خروجی

----------بولی تصادفی--------- مقدار بولی تصادفی این است: درست ----------عدد صحیح تصادفی--------- مرگ Roll: 4 Die Roll: 6 Die Roll: 1 Die Roll: 1 Die Roll: 3 ----------Random Long--------- Random Long مقدار: -6029959293504570824 ---- ------بایت های تصادفی--------- این ها بایت های تصادفی هستند = [ -37 90 -98 -70 23 -111 19 108 ]

مواد و روش ها

اکنون برخی از متدهای ارائه شده توسط این کلاس را مورد بحث قرار می دهیم، با در نظر گرفتن اینکه randomNumbers شی یا نمونه کلاس ما است.
  1. doubles() :

    این روش یک سری نامتناهی از مقادیر دوگانه تولید شده به صورت شبه تصادفی را برمی گرداند. حال بیایید نحوه استفاده از این روش را ببینیم.

    randomNumbers.doubles();
  2. ints() :

    این روش یک سری نامتناهی از مقادیر صحیح شبه تصادفی تولید شده را برمی گرداند. برای فراخوانی این متد می توانید از اسکریپت زیر استفاده کنید.

    randomNumbers.ints();
  3. longs() :

    این روش یک سری نامتناهی از مقادیر طولانی تولید شده به صورت شبه تصادفی را برمی گرداند. برای فراخوانی این متد از اسکریپت زیر استفاده می شود.

    randomNumbers.longs();
  4. nextBoolean() :

    این روش مقدار بولی شبه تصادفی توزیع شده یکنواخت بعدی را از توالی مولد اعداد تصادفی برمی گرداند. توزیع یکنواخت مستطیلی شکل است، به این معنی که هر مقدار در توزیع احتمال برابری دارد. در اینجا نحوه استفاده از این روش آورده شده است.

    randomNumbers.nextBoolean();
  5. nextInt(int n) :

    این روش مقدار عدد صحیح شبه تصادفی توزیع شده یکنواخت بعدی را از دنباله مولد اعداد تصادفی بین 0 شامل و مقدار انحصاری ارائه شده برمی گرداند. یک دید سریع از نحوه استفاده از این روش داشته باشید.

    randomNumbers.nextInt(10);

نتیجه

امیدواریم تا کنون متوجه شده باشید java.util.Random چیست و چگونه روش های مختلف آن را پیاده سازی کنید و در چه سناریویی از آن استفاده کنید. همیشه می توانید از این کلاس در جاوا استفاده کنید. با خیال راحت تمرین کنید و هر زمان که به کمک بیشتری نیاز داشتید به اینجا برگردید. یادگیری مبارک!
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION