JavaTM 2
Platform
Std.  Ed.  v1. 4.0

java.util
Ŭ·¡½º Random

java.lang.Object 
  |
  +--java.util.Random
¸ðµç ±¸Çö ÀÎÅÍÆäÀ̽º:
Serializable
Á÷°èÀÇ ±âÁ¸ÀÇ ¼­ºê Ŭ·¡½º:
SecureRandom

public class Random
extends Object
implements Serializable

Random Ŭ·¡½ºÀÇ ÀνºÅϽº´Â ÀÏ·ÃÀÇ ÀÇ»ç ³­¼ö¸¦ »ý¼ºÇÕ´Ï´Ù. Ŭ·¡½º¿¡¼­´Â 48 ºñÆ®ÀÇ ¹èÁ¤À» »ç¿ëÇØ, ÀÌ ¹èÁ¤Àº ¼±Çü ÇÕµ¿¹ýÀ¸·Î º¯°æµË´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº Donald Knuth Àú ¡¸The Art of Computer Programming, Volume 2¡¹ÀÇ 3.2. 1 À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

2 °³ÀÇ Random ÀνºÅϽº°¡ °°Àº ¹èÁ¤À¸·Î »ý¼ºµÇ¾î °¢°¢ ´ëÇØ °°Àº ¸Þ¼Òµå È£ÃâÀÇ ¼øÂ÷ ¼ø¼­°¡ »ý¼ºµÇ´Â °æ¿ì´Â °°Àº ¹øÈ£ÀÇ ¼øÂ÷ ¼ø¼­°¡ »ý¼ºµÇ°í µ¹·ÁÁÖ¾îÁý´Ï´Ù. ÀÌ ÇÁ·ÎÆÛƼ¸¦ ÇÁ·ÎÅØ¼ÇÇϱâ À§Çؼ­, °íÀ¯ÀÇ ¾Ë°í¸®ÁòÀÌ Random Ŭ·¡½º·Î ÁöÁ¤µË´Ï´Ù. Java ÄÚµåÀÇ Àý´ëÀûÀÎ À̽ļºÀÇ º¸°ü À¯Áö¸¦ À§Çؼ­(¶§¹®¿¡), Java ÀÇ ±¸ÇöÀº ¿©±â¿¡ ³ªÅ¸³ª°í ÀÖ´Â Random Ŭ·¡½ºÀÇ ¾Ë°í¸®ÁòÀ» ¸ðµÎ »ç¿ëÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ´Ù¸¸,Random Ŭ·¡½ºÀÇ ¼­ºê Ŭ·¡½º´Â ¸ðµç ¸Þ¼ÒµåÀÇ ÀÏ¹Ý ±Ô¾à¿¡ ÁذÅÇÑ °ÍÀÌ¸é ´Ù¸¥ ¾Ë°í¸®Áòµµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

Random Ŭ·¡½º¿¡ ÀÇÇØ ±¸ÇöµÇ´Â ¾Ë°í¸®Áò¿¡¼­´Â °¢ È£Ãâ·Î ÀÇ»ç ³­¼öÀûÀ¸·Î »ý¼ºµÈ ÃÖ´ë 32 ºñÆ®¸¦ Á¦°øÇÒ ¼ö ÀÖ´Â protected À¯Æ¿¸®Æ¼ ¸Þ¼Òµå°¡ »ç¿ëµË´Ï´Ù.

´ëºÎºÐÀÇ ¾îÇø®ÄÉÀ̼ǿ¡¼­´Â Ŭ·¡½º Math ÀÇ random ¸Þ¼Òµå¸¦ »ç¿ëÇÏ´Â (ºÐ)ÆíÀÌ °£´ÜÇÕ´Ï´Ù.

µµÀÔµÈ ¹öÁ¯:
JDK1. 0
°ü·Ã Ç׸ñ:
Math.random() , Á÷·ÄÈ­ µÈ Çü½Ä

»ý¼ºÀÚÀÇ °³¿ä
Random ()
          »õ·Î¿î ³­¼ö Á¦³×·¹ÀÌÅ͸¦ ÀÛ¼ºÇÕ´Ï´Ù.
Random (long seed)
          long ÇüÀÇ ¹èÁ¤À» »ç¿ëÇØ ³­¼ö Á¦³×·¹ÀÌÅ͸¦ ÀÛ¼ºÇÕ´Ï´Ù.
 
¸Þ¼ÒµåÀÇ °³¿ä
protected  int next (int bits)
          ´ÙÀ½ÀÇ ÀÇ»ç ³­¼ö¸¦ »ý¼ºÇÕ´Ï´Ù.
 boolean nextBoolean ()
          ³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¼øÂ÷ ¼ø¼­¸¦ »ç¿ëÇØ, ÀÏ´Ô ºÐÆ÷ÀÇ boolean ÇüÀÇ ´ÙÀ½ÀÇ ÀÇ»ç ³­¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù.
 void nextBytes (byte[] bytes)
          ·£´ý ¹ÙÀÌÆ®¸¦ »ý¼ºÇØ, À¯Àú ÁöÁ¤ÀÇ ¹ÙÀÌÆ® ¹è¿­¿¡ ¹èÄ¡ÇÕ´Ï´Ù.
 double nextDouble ()
          ³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¼øÂ÷ ¼ø¼­¸¦ »ç¿ëÇØ,0.0 ~ 1.0 ÀÇ ¹üÀ§¿¡¼­ ÀÏ´Ô ºÐÆ÷ÀÇ double ÇüÀÇ ÀÇ»ç ³­¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù.
 float nextFloat ()
          ³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¼øÂ÷ ¼ø¼­¸¦ »ç¿ëÇØ,0.0 ~ 1.0 ÀÇ ¹üÀ§¿¡¼­ ÀÏ´Ô ºÐÆ÷ÀÇ float ÇüÀÇ ÀÇ»ç ³­¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù.
 double nextGaussian ()
          ³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¼øÂ÷ ¼ø¼­¸¦ »ç¿ëÇØ, Æò±Õ 0.0, Ç¥ÁØ ÆíÂ÷ 1.0 ÀÇ Gauss ( ¡¸Á¤±Ô¡¹) ºÐÆ÷ÀÇ double ÇüÀÇ ÀÇ»ç ³­¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù.
 int nextInt ()
          ³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¼øÂ÷ ¼ø¼­¸¦ »ç¿ëÇØ, ÀÏ´Ô ºÐÆ÷ÀÇ int ÇüÀÇ ÀÇ»ç ³­¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù.
 int nextInt (int n)
          ³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¼øÂ÷ ¼ø¼­¸¦ »ç¿ëÇØ, 0 À¸·ÎºÎÅÍ ÁöÁ¤µÈ °ªÀÇ ¹üÀ§ (0 Àº Æ÷ÇÔÇÏÁö¸¸, ±× ÁöÁ¤µÈ °ªÀº Æ÷ÇÔÇÏÁö ¾Ê´Â´Ù)¿¡¼­ ÀÏ´Ô ºÐÆ÷ÀÇ int ÇüÀÇ ÀÇ»ç ³­¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù.
 long nextLong ()
          ³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¼øÂ÷ ¼ø¼­¸¦ »ç¿ëÇØ, ÀÏ´Ô ºÐÆ÷ÀÇ long ÇüÀÇ ´ÙÀ½ÀÇ ÀÇ»ç ³­¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù.
 void setSeed (long seed)
          ´ÜÀÏÀÇ long ÇüÀÇ ¹èÁ¤À» »ç¿ëÇØ, ³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¹èÁ¤À» ¼³Á¤ÇÕ´Ï´Ù.
 
Ŭ·¡½º java.lang. Object ¿¡¼­ »ó¼Ó¹ÞÀº ¸Þ¼Òµå
clone , equals , finalize , getClass , hashCode , notify , notifyAll , toString , wait , wait , wait
 

»ý¼ºÀÚÀÇ »ó¼¼

Random

public Random()
»õ·Î¿î ³­¼ö Á¦³×·¹ÀÌÅ͸¦ ÀÛ¼ºÇÕ´Ï´Ù. ¹èÁ¤Àº ÇöÀç ½Ã°¢À» ±âÃÊ·Î ÃʱâÈ­µË´Ï´Ù.
 public Random() { this(System.currentTimeMillis()); }
°°Àº ¹Ð¸® ¼¼ÄÁµå³»¿¡ ÀÛ¼ºµÈ 2 °³ÀÇ Random ¿ÀºêÁ§Æ®¿¡´Â µ¿ÀÏ ¼øÂ÷ ¼ø¼­ÀÇ ³­¼ö°¡ ÀÖ½À´Ï´Ù.

°ü·Ã Ç׸ñ:
System.currentTimeMillis()

Random

public Random(long seed)
long ÇüÀÇ ¹èÁ¤À» »ç¿ëÇØ ³­¼ö Á¦³×·¹ÀÌÅ͸¦ ÀÛ¼ºÇÕ´Ï´Ù.
 public Random(long seed) { setSeed(seed); }
ÀÇ»ç ³­¼ö Á¦³×·¹ÀÌÅÍ »óŸ¦ º¸°ü À¯ÁöÇϱâ À§Çؼ­ next ¸Þ¼Òµå¿¡ ÀÇÇØ »ç¿ëµË´Ï´Ù.

ÆÄ¶ó¹ÌÅÍ:
seed - Ãʱ⠹èÁ¤
°ü·Ã Ç׸ñ:
setSeed(long)
¸Þ¼ÒµåÀÇ »ó¼¼

setSeed

public void setSeed(long seed)
´ÜÀÏÀÇ long ÇüÀÇ ¹èÁ¤À» »ç¿ëÇØ, ³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¹èÁ¤À» ¼³Á¤ÇÕ´Ï´Ù. setSeed ÀÇ ÀÏ¹Ý ±Ô¾à¿¡¼­´Â ¹èÁ¤À¸·Î¼­ Àμö seed ¸¦ »ç¿ëÇØ ÀÛ¼ºµÈÁö ¾ó¸¶ ¾ÈµÈ »óÅÂ¿Í °°°Ô µÇµµ·Ï(µíÀÌ), ÀÌ ³­¼ö Á¦³×·¹ÀÌÅÍ ¿ÀºêÁ§Æ® »óŸ¦ º¯°æÇÕ´Ï´Ù. setSeed ¸Þ¼Òµå´Â Random Ŭ·¡½º¿¡ ÀÇÇØ ´ÙÀ½°ú °°ÀÌ ±¸ÇöµË´Ï´Ù.
 synchronized public void setSeed(long seed) {
       this.seed = (seed ^ 0x5DEECE66DL) & ((1L << 48) - 1);
       haveNextNextGaussian = false;
 }
Random Ŭ·¡½º¿¡ ÀÇÇÑ setSeed ÀÇ ±¸ÇöÀº ÁöÁ¤µÈ ¹èÁ¤ÀÇ 48 ºñÆ®¸¸À» »ç¿ëÇϰí ÀÖ½À´Ï´Ù¸¸, ÀϹÝÀûÀ¸·Î´Â ¸Þ¼Òµå´Â º¯°æÇÏ´Â °ÍÀ¸·Î½á, ¹èÁ¤Ä¡·Î¼­ long ÀμöÀÇ 64 ºñÆ® ¸ðµç °ÍÀ» »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

ÆÄ¶ó¹ÌÅÍ:
seed - Ãʱ⠹èÁ¤

next

protected int next(int bits)
´ÙÀ½ÀÇ ÀÇ»ç ³­¼ö¸¦ »ý¼ºÇÕ´Ï´Ù. ÀÌ ¸Þ¼Òµå´Â ´Ù¸¥ ¸ðµç ¸Þ¼Òµå¿¡ ÀÇÇØ »ç¿ëµÇ¹Ç·Î, ¼­ºê Ŭ·¡½º¿¡ ÀÇÇØ µ¡¾²±âµË´Ï´Ù.

next ÀÇ ÀÏ¹Ý ±Ô¾à¿¡¼­´Â int ÇüÀÇ °ªÀ» µ¹·ÁÁÖ¾î, Àμö bits °¡ 1 ~ 32 (1 À¸·Î 32 ¸¦ Æ÷ÇÔÇÑ´Ù)ÀÇ ¹üÀ§ÀÇ °æ¿ì´Â ¹Ýȯ°ªÀÌ ¸¹Àº ÇÏÀ§ ºñÆ®°¡ (°ÅÀÇ) µ¶¸³¿¡ ¼±ÅÃµÈ ºñƮġ°¡ µÇ¾î, °¢°¢ÀÇ °ªÀº (°ÅÀÇ) ±ÕµîÇÏ°Ô 0 ¶Ç´Â 1 ÀÌ µË´Ï´Ù. next ¸Þ¼Òµå´Â Random Ŭ·¡½º¿¡ ÀÇÇØ ´ÙÀ½°ú °°ÀÌ ±¸ÇöµË´Ï´Ù.

 synchronized protected int next(int bits) {
       seed = (seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1);
       return (int)(seed >>> (48 - bits));
 }
À̰ÍÀº D. H. Lehmer ¿¡ ÀÇÇØ Á¤ÀǵÈ, ¼±Çü ÇÕµ¿ ÀÇ»ç ³­¼ö Á¦³×·¹ÀÌÅÍÀÔ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº Donald Knuth Àú ¡¸The Art of Computer Programming, Volume 2: Seminumerical Algorithms¡¹ÀÇ 3.2. 1 À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

ÆÄ¶ó¹ÌÅÍ:
bits - ·£´ý ºñÆ®
¹Ýȯ°ª:
³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¼øÂ÷ ¼ø¼­¸¦ »ç¿ëÇØ »ý¼ºµÈ, ´ÙÀ½ÀÇ ÀÇ»ç ³­¼ö
µµÀÔµÈ ¹öÁ¯:
JDK1. 1

nextBytes

public void nextBytes(byte[] bytes)
·£´ý ¹ÙÀÌÆ®¸¦ »ý¼ºÇØ, À¯Àú ÁöÁ¤ÀÇ ¹ÙÀÌÆ® ¹è¿­¿¡ ¹èÄ¡ÇÕ´Ï´Ù. ÀÛ¼ºµÇ´Â ·£´ý ¹ÙÀÌÆ®ÀÇ ¼ö´Â ¹ÙÀÌÆ® ¹è¿­ÀÇ ±æÀÌ¿Í µ¿ÀÏÇØÁý´Ï´Ù.

ÆÄ¶ó¹ÌÅÍ:
bytes - ·£´ý ¹è¿­À» ¹èÄ¡ÇÏ´Â null ÀÌ¿ÜÀÇ ¹ÙÀÌÆ® ¹è¿­
µµÀÔµÈ ¹öÁ¯:
JDK1. 1

nextInt

public int nextInt()
³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¼øÂ÷ ¼ø¼­¸¦ »ç¿ëÇØ, ÀÏ´Ô ºÐÆ÷ÀÇ int ÇüÀÇ ÀÇ»ç ³­¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù. nextInt ÀÇ ÀÏ¹Ý ±Ô¾à¿¡¼­´Â 1 °³ÀÇ int ÇüÀÇ °ªÀÌ ÀÇ»ç ³­¼ö·Î¼­ »ý¼ºµÇ¾î µ¹·ÁÁÖ¾îÁý´Ï´Ù. 232 ÀÇ °¡´ÉÇÑ ¸ðµç int Ä¡°¡ (°ÅÀÇ) ±ÕµîÀÎ È®·ü·Î »ý¼ºµË´Ï´Ù. nextInt ¸Þ¼Òµå´Â Random Ŭ·¡½º¿¡ ÀÇÇØ ´ÙÀ½°ú °°ÀÌ ±¸ÇöµË´Ï´Ù.
 public int nextInt() {  return next(32); }

¹Ýȯ°ª:
³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¼øÂ÷ ¼ø¼­¸¦ »ç¿ëÇØ »ý¼ºµÈ µîºÐ¿Ê°¨ÀÇ int Çü ÀÇ»ç ³­¼ö

nextInt

public int nextInt(int n)
³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¼øÂ÷ ¼ø¼­¸¦ »ç¿ëÇØ, 0 À¸·ÎºÎÅÍ ÁöÁ¤µÈ °ªÀÇ ¹üÀ§ (0 Àº Æ÷ÇÔÇÏÁö¸¸, ±× ÁöÁ¤µÈ °ªÀº Æ÷ÇÔÇÏÁö ¾Ê´Â´Ù)¿¡¼­ ÀÏ´Ô ºÐÆ÷ÀÇ int ÇüÀÇ ÀÇ»ç ³­¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù. nextInt ÀÇ ÀÏ¹Ý ±Ô¾à¿¡¼­´Â ÁöÁ¤µÈ ¹üÀ§³»ÀÇ 1 °³ÀÇ int Ä¡°¡ ÀÇ»ç ³­¼ö·Î¼­ »ý¼ºµÇ¾î µ¹·ÁÁÖ¾îÁý´Ï´Ù. n °³ÀÇ °¡´ÉÇÑ ¸ðµç int Ä¡°¡ (°ÅÀÇ) ±ÕµîÀÎ È®·ü·Î »ý¼ºµË´Ï´Ù. nextInt(int n) ¸Þ¼Òµå´Â Random Ŭ·¡½º¿¡ ÀÇÇØ ´ÙÀ½°ú °°ÀÌ ±¸ÇöµË´Ï´Ù.
 public int nextInt(int n) {
     if (n<=0)
		throw new IllegalArgumentException("n must be positive");

     if ((n & -n) == n)  // i.e., n is a power of 2
         return (int)((n * (long) next(31)) >> 31);

     int bits, val;
     do {
         bits = next(31);
         val = bits % n;
     } while(bits - val + (n-1) < 0);
     return val;
 }
 

»ó±âÀÇ ¼³¸íÀ¸·Î ¡¸°ÅÀÇ¡¹¶ó°í ÇÏ´Â ¸»À» »ç¿ëÇϰí ÀÖ´Â °ÍÀº next ¸Þ¼Òµå°¡, ´ÜÁö °ÅÀÇ ¹«°ü°èÇÏ°Ô ¼±ÅÃµÈ ºñÆ®ÀÇ Á߸³ÀûÀÎ ¼Ò½ºÀ̱⠶§¹®ÀÔ´Ï´Ù. ·£´ý¿¡ ¼±ÅÃµÈ ºñÆ®ÀÇ ¿ÏÀüÇÑ ¼Ò½ºÀÌ´Ù°í Çϸé, ³ªÅ¸³­ ¾Ë°í¸®ÁòÀº ÁöÁ¤µÈ ¹üÀ§·ÎºÎÅÍ ¿ÏÀüÇÑ Àϰü¼ºÀ¸·Î int ÇüÀÇ °ªÀ» ¼±ÅÃÇÏ°Ô µË´Ï´Ù.

ÀÌ ¾Ë°í¸®ÁòÀº ´Ù¼Ò Ãë±ÞÇϱâ Èûµç ¸éÀÌ ÀÖ½À´Ï´Ù. ÀÌ ¾Ë°í¸®ÁòÀº ÇѰᰰÁö ¾ÊÀº ºÐÆ÷°¡ µÇ´Â °ªÀ» °ÅÀýÇÕ´Ï´Ù (2^31 °¡ n ·Î °¥¶óÁöÁö ¾Ê´Â °Í¿¡ ¹ã). °ªÀÌ °ÅÀýµÇ´Â È®·üÀº n ¿¡ µû¶ó¼­ ´Ù¸¨´Ï´Ù. ÃÖ¾ÇÀÇ ÄÉÀ̽º´Â n=2^30+1 ·Î, ÀÌ °æ¿ì, °ÅÀýÀÇ È®·üÀº 1/2 ÀÌ µÇ¾î, ·çÇÁ°¡ °­Á¦ Á¾·áÇÒ ¶§±îÁö°¡ ¿¹»óµÇ´Â ¹Ýº¹ ȸ¼ö´Â 2 ȸÀÔ´Ï´Ù.

ÀÌ ¾Ë°í¸®ÁòÀº n °¡ 2 ÀÇ ´©½ÂÀÎ ÄÉÀ̽º¸¦ Ưº°È÷ ó¸®ÇÕ´Ï´Ù. ÀÌ ¾Ë°í¸®ÁòÀº ±âº»À¸·Î µÇ´Â ÀÇ»ç ³­¼ö Á¦³×·¹ÀÌÅͷκÎÅÍ ÀûÀýÇÑ ¼öÀÇ »óÀ§ ºñÆ®¸¦ µ¹·ÁÁÝ´Ï´Ù. Ưº°ÇÑ Ã³¸®°¡ ¾ø´Â °æ¿ì´Â ÀûÀýÇÑ ¼öÀÇ ¡¸ÇÏÀ§¡¹ºñÆ®°¡ µ¹·ÁÁÖ¾îÁý´Ï´Ù. ÀÌ Å¬·¡½º¿¡¼­ ±¸ÇöµÇ°í ÀÖ´Â °Í °°Àº ¼±Çü ÇÕµ¿ ÀÇ»ç ³­¼ö Á¦³×·¹ÀÌÅÍ´Â ÇÏÀ§ ºñÆ®ÀÇ °ªÀÇ ¼øÂ÷ ¼ø¼­·Î ÁֱⰡ ªÀº ÀÏÀÌ ¾Ë·ÁÁ® ÀÖ½À´Ï´Ù. ±× ¶§¹®¿¡, ÀÌ Æ¯º°ÇÑ ÄÉÀ̽º¿¡¼­´Â n °¡ 2 °¡ ÀÛÀº ´©½ÂÀÎ °æ¿ì, ÀÌ ¸Þ¼Òµå°¡ ¿¬¼ÓÇÑ È£Ãâ¿¡ ÀÇÇØ µ¹·ÁÁÖ¾îÁö´Â °ªÀÇ ¼øÂ÷ ¼ø¼­ÀÇ ±æÀ̰¡ Å«ÆøÀ¸·Î ±æ¾îÁý´Ï´Ù.

ÆÄ¶ó¹ÌÅÍ:
n - µ¹·ÁÁÖ¾îÁö´Â ³­¼öÀÇ ÇѰèÄ¡. Á¤ÀÇ °ªÀÌ ¾Æ´Ï¸é ¾ÈµÈ´Ù
¹Ýȯ°ª:
0 ~ n ÀÇ ¹üÀ§ (0 Àº Æ÷ÇÔÇÏÁö¸¸, n ´Â Æ÷ÇÔÇÏÁö ¾Ê´Â´Ù)¿¡¼­ ÀÏ´Ô ºÐÆ÷ÀÇ int Çü ÀÇ»ç ³­¼ö
¿¹¿Ü:
IllegalArgumentException - n °¡ ºÎÀÇ °ªÀÇ °æ¿ì
µµÀÔµÈ ¹öÁ¯:
1.2

nextLong

public long nextLong()
³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¼øÂ÷ ¼ø¼­¸¦ »ç¿ëÇØ, ÀÏ´Ô ºÐÆ÷ÀÇ long ÇüÀÇ ´ÙÀ½ÀÇ ÀÇ»ç ³­¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù. nextLong ÀÇ ÀÏ¹Ý ±Ô¾à¿¡¼­´Â 1 °³ÀÇ long ÇüÀÇ °ªÀÌ ÀÇ»ç ³­¼ö·Î¼­ »ý¼ºµÇ¾î µ¹·ÁÁÖ¾îÁý´Ï´Ù. 264 ÀÇ °¡´ÉÇÑ ¸ðµç long Ä¡°¡ (°ÅÀÇ) ±ÕµîÀÎ È®·ü·Î »ý¼ºµË´Ï´Ù. nextLong ¸Þ¼Òµå´Â Random Ŭ·¡½º¿¡ ÀÇÇØ ´ÙÀ½°ú °°ÀÌ ±¸ÇöµË´Ï´Ù.
 public long nextLong() {
       return ((long) next(32) << 32) + next(32);
 }

¹Ýȯ°ª:
³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¼øÂ÷ ¼ø¼­¸¦ »ç¿ëÇØ »ý¼ºµÈ, ÀÏ´Ô ºÐÆ÷ÀÇ long ÇüÀÇ ´ÙÀ½ÀÇ ÀÇ»ç ³­¼ö

nextBoolean

public boolean nextBoolean()
³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¼øÂ÷ ¼ø¼­¸¦ »ç¿ëÇØ, ÀÏ´Ô ºÐÆ÷ÀÇ boolean ÇüÀÇ ´ÙÀ½ÀÇ ÀÇ»ç ³­¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù. nextBoolean ÀÇ ÀÏ¹Ý ±Ô¾à¿¡¼­´Â 1 °³ÀÇ boolean ÇüÀÇ °ªÀÌ ÀÇ»ç ³­¼ö·Î¼­ »ý¼ºµÇ¾î µ¹·ÁÁÖ¾îÁý´Ï´Ù. true ¿Í false ÀÇ °ªÀÌ (°ÅÀÇ) µ¿ÀÏÇÑ È®·ü·Î »ý¼ºµË´Ï´Ù. nextBoolean ¸Þ¼Òµå´Â Random Ŭ·¡½º¿¡ ÀÇÇØ ´ÙÀ½°ú °°ÀÌ ±¸ÇöµË´Ï´Ù.
 public boolean nextBoolean() {return next(1) ! = 0;}

¹Ýȯ°ª:
³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¼øÂ÷ ¼ø¼­¸¦ »ç¿ëÇØ »ý¼ºµÈ µîºÐ¿Ê°¨ÀÇ boolean Çü ÀÇ»ç ³­¼ö
µµÀÔµÈ ¹öÁ¯:
1.2

nextFloat

public float nextFloat()
³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¼øÂ÷ ¼ø¼­¸¦ »ç¿ëÇØ,0.0 ~ 1.0 ÀÇ ¹üÀ§¿¡¼­ ÀÏ´Ô ºÐÆ÷ÀÇ float ÇüÀÇ ÀÇ»ç ³­¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù.

nextFloat ÀÇ ÀÏ¹Ý ±Ô¾à¿¡¼­´Â 0.0f ~ 1.0f ÀÇ ¹üÀ§ (0.0f ´Â Æ÷ÇÔÇÏÁö¸¸, 1.0f ´Â Æ÷ÇÔÇÏÁö ¾Ê´Â´Ù)·ÎºÎÅÍ (°ÅÀÇ) ±ÕµîÀÎ È®·ü·Î ¼±ÅÃµÈ 1 °³ÀÇ float Ä¡°¡ ÀÇ»ç ³­¼ö·Î¼­ »ý¼ºµÇ¾î µ¹·ÁÁÖ¾îÁý´Ï´Ù. m x 2-24 ¶ó°í ÇÏ´Â Çü½Ä (m ´Â 224 ¹Ì¸¸ÀÇ Á¤ÀÇ Á¤¼ö)ÀÇ 224 ÀÇ °¡´ÉÇÑ ¸ðµç float Ä¡°¡ (°ÅÀÇ) ±ÕµîÀÎ È®·ü·Î »ý¼ºµË´Ï´Ù. nextFloat ¸Þ¼Òµå´Â Random Ŭ·¡½º¿¡ ÀÇÇØ ´ÙÀ½°ú °°ÀÌ ±¸ÇöµË´Ï´Ù.

 public float nextFloat() {
      return next(24) / ((float)(1 << 24));
 }
»ó±âÀÇ ¼³¸íÀ¸·Î ¡¸°ÅÀÇ¡¹¶ó°í ÇÏ´Â ¸»À» »ç¿ëÇϰí ÀÖ´Â °ÍÀº next ¸Þ¼Òµå°¡ ´ÜÁö °ÅÀÇ ¹«°ü°èÇÏ°Ô ¼±ÅÃµÈ ºñÆ®ÀÇ Á߸³ÀûÀÎ ¼Ò½ºÀ̱⠶§¹®ÀÔ´Ï´Ù. ·£´ý¿¡ ¼±ÅÃµÈ ºñÆ®ÀÇ ¿ÏÀüÇÑ ¼Ò½ºÀÌ´Ù°í Çϸé, ³ªÅ¸³­ ¾Ë°í¸®ÁòÀº ÁöÁ¤µÈ ¹üÀ§·ÎºÎÅÍ ¿ÏÀüÇÑ Àϰü¼ºÀ¸·Î float ÇüÀÇ °ªÀ» ¼±ÅÃÇÏ°Ô µË´Ï´Ù.

[ÀÌÀüÀÇ ¹öÁ¯ÀÇ Java ¿¡¼­´Â °á°ú´Â ´ÙÀ½°ú °°ÀÌ À߸øÇØ °è»êµÇ¾ú½À´Ï´Ù.

 return next(30) / ((float)(1 << 30));
À̰ÍÀ̱⵵ ÇÑ Á¤µµ µ¿ÀÏÇÏ°Ô »ý°¢µË´Ï´Ù¸¸, ½ÇÁ¦·Î´Â ºÎµ¿ ¼Ò¼öÁ¡¼ö(½Ç¼ö)ÀÇ µÕ±Ù¿¡¼­ÀÇ ¹ÙÀ̾¸¦ À§Çؼ­(¶§¹®¿¡) ´Ù¼ÒÀÇ °ÝÂ÷°¡ »ý±â¹Ç·Î, À¯È¿ ¼ýÀÚÀÇ ÇÏÀ§ ºñÆ®°¡, 1 º¸´Ù 0 ÀÌ µÇ´Â °ÍÀÌ ¸¹¾ÆÁö±â ½±»óÀ̾ú½À´Ï´Ù. }

¹Ýȯ°ª:
³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¼øÂ÷ ¼ø¼­¸¦ »ç¿ëÇÑ,0.0 ~ 1.0 ÀÇ ¹üÀ§¿¡¼­ ÀÏ´Ô ºÐÆ÷ÀÇ float ÇüÀÇ ´ÙÀ½ÀÇ ÀÇ»ç ³­¼ö

nextDouble

public double nextDouble()
³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¼øÂ÷ ¼ø¼­¸¦ »ç¿ëÇØ,0.0 ~ 1.0 ÀÇ ¹üÀ§¿¡¼­ ÀÏ´Ô ºÐÆ÷ÀÇ double ÇüÀÇ ÀÇ»ç ³­¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù.

nextDouble ÀÇ ÀÏ¹Ý ±Ô¾à¿¡¼­´Â 0.0d ~ 1.0d ÀÇ ¹üÀ§·ÎºÎÅÍ (°ÅÀÇ) ±ÕµîÀÎ È®·ü·Î ¼±ÅÃµÈ 1 °³ÀÇ double Ä¡°¡ ÀÇ»ç ³­¼ö·Î¼­ »ý¼ºµÇ¾î µ¹·ÁÁÖ¾îÁý´Ï´Ù. m x 2-53 ¶ó°í ÇÏ´Â Çü½Ä (m ´Â 253 ¹Ì¸¸ÀÇ Á¤ÀÇ Á¤¼ö)ÀÇ 253 ÀÇ °¡´ÉÇÑ ¸ðµç float Ä¡°¡ (°ÅÀÇ) ±ÕµîÀÎ È®·ü·Î »ý¼ºµË´Ï´Ù. nextDouble ¸Þ¼Òµå´Â Random Ŭ·¡½º¿¡ ÀÇÇØ ´ÙÀ½°ú °°ÀÌ ±¸ÇöµË´Ï´Ù.

 public double nextDouble() {
       return (((long) next(26) << 27) + next(27))
           / (double)(1L << 53);
 }

»ó±âÀÇ ¼³¸íÀ¸·Î ¡¸°ÅÀÇ¡¹¶ó°í ÇÏ´Â ¸»À» »ç¿ëÇϰí ÀÖ´Â °ÍÀº next ¸Þ¼Òµå°¡ ´ÜÁö °ÅÀÇ ¹«°ü°èÇÏ°Ô ¼±ÅÃµÈ ºñÆ®ÀÇ Á߸³ÀûÀÎ ¼Ò½ºÀ̱⠶§¹®ÀÔ´Ï´Ù. ·£´ý¿¡ ¼±ÅÃµÈ ºñÆ®ÀÇ ¿ÏÀüÇÑ ¼Ò½ºÀÌ´Ù°í Çϸé, ³ªÅ¸³­ ¾Ë°í¸®ÁòÀº ÁöÁ¤µÈ ¹üÀ§·ÎºÎÅÍ ¿ÏÀüÇÑ Àϰü¼ºÀ¸·Î double ÇüÀÇ °ªÀ» ¼±ÅÃÇÏ°Ô µË´Ï´Ù.

[ÀÌÀüÀÇ ¹öÁ¯ÀÇ Java ¿¡¼­´Â °á°ú´Â ´ÙÀ½°ú °°ÀÌ À߸øÇØ °è»êµÇ¾ú½À´Ï´Ù.

  return (((long) next(27) << 27) + next(27))
      / (double)(1L << 54);
À̰ÍÀ̱⵵ ÇÑ Á¤µµ µ¿ÀÏÇÏ°Ô »ý°¢µË´Ï´Ù¸¸, ½ÇÁ¦·Î´Â ºÎµ¿ ¼Ò¼öÁ¡¼ö(½Ç¼ö)ÀÇ µÕ±Ù¿¡¼­ÀÇ ¹ÙÀ̾¸¦ À§Çؼ­(¶§¹®¿¡) Å« °ÝÂ÷°¡ »ý±â¹Ç·Î, À¯È¿ ¼ýÀÚÀÇ ÇÏÀ§ ºñÆ®°¡ 0 ÀÌ µÇ´Â °ÍÀÌ 1 ÀÌ µÇ´Â °ÍÀÇ 3 ¹è ÀÖ¾ú½À´Ï´Ù. ÀÌ Á¤µµÀÇ °ÝÂ÷´Â ½ÇÁ¦·Î´Â ¹®Á¦°¡ µÇÁö ¾Ê½À´Ï´Ù¸¸, ¿ÏÀü¼ºÀ» ¿ä±¸ÇØ ¼öÁ¤À» ½ÃµµÇϰí ÀÖ½À´Ï´Ù. }

¹Ýȯ°ª:
³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¼øÂ÷ ¼ø¼­¸¦ »ç¿ëÇÑ,0.0 ~ 1.0 ÀÇ ¹üÀ§¿¡¼­ ÀÏ´Ô ºÐÆ÷ÀÇ double ÇüÀÇ ´ÙÀ½ÀÇ ÀÇ»ç ³­¼ö

nextGaussian

public double nextGaussian()
³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¼øÂ÷ ¼ø¼­¸¦ »ç¿ëÇØ, Æò±Õ 0.0, Ç¥ÁØ ÆíÂ÷ 1.0 ÀÇ Gauss ( ¡¸Á¤±Ô¡¹) ºÐÆ÷ÀÇ double ÇüÀÇ ÀÇ»ç ³­¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù.

nextGaussian ÀÇ ÀÏ¹Ý ±Ô¾à¿¡¼­´Â Æò±Õ 0.0, Ç¥ÁØ ÆíÂ÷ 1.0 ÀÇ (°ÅÀÇ) Åë»óÀÇ Á¤±Ô ºÐÆ÷·ÎºÎÅÍ ¼±ÅõÈ, 1 °³ÀÇ double ÇüÀÇ °ªÀÌ ÀÇ»ç ³­¼ö·Î¼­ »ý¼ºµÇ¾î µ¹·ÁÁÖ¾îÁý´Ï´Ù. nextGaussian ¸Þ¼Òµå´Â Random Ŭ·¡½º¿¡ ÀÇÇØ ´ÙÀ½°ú °°ÀÌ ±¸ÇöµË´Ï´Ù.

 synchronized public double nextGaussian() {
    if (haveNextNextGaussian) {
            haveNextNextGaussian = false;
            return nextNextGaussian;
    } else {
            double v1, v2, s;
            do { 
                    v1 = 2 * nextDouble() - 1;   // between -1. 0 and 1.0
                    v2 = 2 * nextDouble() - 1;   // between -1. 0 and 1.0
                    s = v1 * v1 + v2 * v2;
            } while (s >= 1 || s == 0);
            double multiplier = Math.sqrt(-2 * Math.log(s) /s);
            nextNextGaussian = v2 * multiplier;
            haveNextNextGaussian = true;
            return v1 * multiplier;
    }
 }
À̰ÍÀº Donald E. Knuth Àú ¡¸The Art of Computer Programming, Volume 2: Seminumerical Algorithms¡¹ÀÇ 3.4. 1 ÀÇ C, ¾Ë°í¸®Áò P ·Î ¼³¸íµÇ°í ÀÖ´Â G. E. P. Box, M. E. Muller, ¹× G. Marsaglia ÀÇ ¡¸polar method¡¹¸¦ »ç¿ëÇÕ´Ï´Ù. Math.log ¿Í Math.sqrt ÀÇ È£Ã⸸À¸·Î 2 °³ÀÇ ´Ù¸¥ °ªÀ» »ý¼ºÇÏ´Â °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä.

¹Ýȯ°ª:
³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¼øÂ÷ ¼ø¼­¸¦ »ç¿ëÇÑ, Æò±Õ 0.0, Ç¥ÁØ ÆíÂ÷ 1.0 ÀÇ Gauss ( ¡¸Á¤±Ô¡¹) ºÐÆ÷ÀÇ double ÇüÀÇ ´ÙÀ½ÀÇ ÀÇ»ç ³­¼ö

JavaTM 2
Platform
Std.  Ed.  v1. 4.0

¹ö±×ÀÇ º¸°í¿Í ±â´ÉÀÇ ¸®Äù½ºÆ®
ÀÌ¿ÜÀÇ API ·¹ÆÛ·±½º ¹× °³¹ßÀÚ¿ë ¹®¼­¿¡ ´ëÇØ¼­´Â Java 2 SDK SE °³¹ßÀÚ¿ë ¹®¼­¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä. °³¹ßÀÚÀü¿ëÀÇ »ó¼¼ÇÑ ÇØ¼³, °³³äÀÇ °³¿ä, ¿ë¾îÀÇ Á¤ÀÇ, ¹ö±×ÀÇ È¸ÇÇÃ¥, ¹× ÄÚµå ½Ç·Ê°¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù.

Java, Java 2 D, ¹× JDBC ´Â ¹Ì±¹ ¹× ±× ¿ÜÀÇ ³ª¶ó¿¡ À־ÀÇ ¹Ì±¹ Sun Microsystems, Inc. ÀÇ »óÇ¥ ȤÀº µî·Ï»óÇ¥ÀÔ´Ï´Ù.
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.