¼±Çü ÇÕµ¿¹ý(Linear Congrential Generator) ÁÙ¿©¼ LCG¶ó°í ºÒ¸®´Â ¾Ë°í¸®ÁòÀ» ÀÌ¿ëÇÑ ³¼ö ¹ß»ý±â ¼Ò½ºÀÔ´Ï´Ù.
C# ÄÜ¼Ö ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇÑ ÈÄ ´ÙÀ½ ¼Ò½º¸¦ ºÙ¿© ³ÖÀ¸¸é ¹Ù·Î µ¿ÀÛÀ» È®ÀÎÇØ º¼ ¼ö ÀÖ½À´Ï´Ù.
using System;
namespace cstestcon
{
public class RandomGenerator
{
public UInt32 seed;
public RandomGenerator()
{
DateTime now = DateTime.Now;
// ÇöÀç ½Ã°£ÀÇ ºÐ°ú Ãʸ¦ °öÇØ ¹«ÀÛÀ§ÇÑ ¾¾Á¡À» ¸¸µç´Ù.
this.seed = (UInt32)(now.Minute * now.Second);
}
public RandomGenerator(UInt32 seed)
{
// ÁöÁ¤ÇÑ ¾¾Á¡À» »ç¿ëÇÔÀ¸·Î½á ÀÏÁ¤ÇÑ ³¼ö¸¦ ¾ò´Â´Ù.
this.seed = seed;
}
public int GetRandom(int from, int to)
{
// °íÀÇ·Î ¿À¹öÇ÷ο츦 À¯¹ßÇÏ¿© ¹«ÀÛÀ§ÇÑ ³¼ö¸¦ ¸¸µç´Ù.
seed = seed * 8906299 + 91764051;
// ¿äûÇÑ ¹üÀ§¾ÈÀÇ ¼ö¸¦ °í¸¥´Ù.
return (int)(seed % (to - from) + from);
}
}
class Program
{
static void Main(string[] args)
{
RandomGenerator R = new RandomGenerator();
for (int i =0; i < 10; i++)
{
// 1 ~ 6±îÁöÀÇ ÁÖ»çÀ§ ¼ö¸¦ °í¸¥´Ù.
// ³¡ ¹üÀ§´Â Á¦¿ÜµÊÀ» À¯ÀÇÇÒ °Í
Console.WriteLine(R.GetRandom(1, 7));
}
}
}
}
1 ~ 6 »çÀÌÀÇ ³¼ö 10 °³¸¦ Ãâ·ÂÇÕ´Ï´Ù.
ÇöÀç ½Ã°£À» ¾¾Á¡À¸·Î »ç¿ëÇϹǷΠ½ÇÇàÇÒ ¶§¸¶´Ù ´Ù¸¥ °á°ú°¡ ³ªÅ¸³³´Ï´Ù.
±×·±µ¥... À̵ý °É ¿Ö ¸¸µå³Ä±¸¿ä?
C#¿¡ ÀÌ¹Ì Àß ¸¸µé¾îÁø Random Ŭ·¡½º°¡ Àִµ¥ ±×°É ¾²¸é µÇÁö.
±×·¸ÁÒ. ³¼ö ÀÚü°¡ ¸ñÀûÀÌ¸é ¶óÀ̺귯¸®ÀÇ Å¬·¡½º¸¦ Ȱ¿ëÇÏ¸é µË´Ï´Ù.
±×·±µ¥ ÀÌ·±°É ¸¸µé¾î ½á¾ß ÇÏ´Â ÀÌÀ¯´Â ¼Ò½º ǰÁú °Ë»ç±â¿¡ RandomÀÌ °É¸®±â ¶§¹®ÀÔ´Ï´Ù.
SI ÇÁ·ÎÁ§Æ®´Â ±â°è°¡ ¼Ò½º ǰÁúÀ» °Ë»çÇϴµ¥ È帧ÀÌ ÀÌ»óÇϰųª ÀÚ¿ø ÇØÁ¦¸¦ Á¦´ë·Î ÇÏÁö ¾ÊÀ¸¸é ÁöÀûÁúÀÌ µé¾î¿É´Ï´Ù.
Random Ŭ·¡½º¸¦ »ç¿ëÇϸé È帧ÀÌ ÀÏÁ¤Ä¡ ¾Ê´Ù´Â °æ°í°¡ ¹ß»ýÇØ¿ä.
Å×½ºÆ® µ¥ÀÌÅÍ »ý¼ºÀ» À§ÇØ RandomÀÌ ÇÊ¿äÇØµµ ±â°è°¡ °æ°í¸¦ ÇÏ´Ï ¾î¿ ¼ö ¾ø¾î¿ä.
¹°·Ð ¿¹¿Ü »çÇ×À¸·Î µî·Ï ½ÅÃ»ÇØ¼ ÇÇÇØ°¥ ¼öµµ ÀÖÁö¸¸ ÀýÂ÷°¡ º¹ÀâÇØ ±ÍÂúÀº°ÅÁÒ.
±×·¡¼ RandomÀ» ´ë½ÅÇÒ »ç¿ëÀÚ Á¤ÀÇ Å¬·¡½º°¡ ÇÊ¿äÇØÁö´õ¶ó±¸¿ä.
¶Ç, ³¼ö ¹ß»ý ¾Ë°í¸®Áò ¿¬±¸¿ëÀ¸·Îµµ °¡Ä¡°¡ ÀÖ°í¿ä.

¿À´Ãµµ ÃÖ¼±À» ´Ù ÇÏÀÚ. |
|