JavaTM 2 Platform
Standard Ed. 5.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()
»õ·Î¿î ³­¼ö Á¦³×·¹ÀÌÅ͸¦ ÀÛ¼ºÇÕ´Ï´Ù. ÀÌ »ý¼ºÀÚ´Â ³­¼ö Á¦³×·¹ÀÌÅÍÀÇ ¹èÁ¤À» ÀÌ »ý¼ºÀÚ ´Ù¸¥ È£Ãâ°ú ±¸º° °¡´ÉÇÑ °ªÀ¸·Î ¼³Á¤ÇÕ´Ï´Ù.


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 ºñÆ® ¸ðµç °ÍÀ» »ç¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÁÖ: ¹èÁ¤Ä¡´Â AtomicLong ÀÔ´Ï´Ù¸¸, haveNextNextGaussian ÀûÁ¤ÇÑ ½Ã¸àƽ½º¸¦ º¸ÁõÇϱâ À§ÇØ, ÀÌ ¸Þ¼­µåÀÇ µ¿±â¸¦ °è¼ÓÇØ ½Ç½ÃÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù.

ÆĶó¹ÌÅÍ:
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
Standard Ed. 5.0

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ ÂüÁ¶ÇϽʽÿÀ.