맨위로가기

난수

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

난수는 무작위로 생성된 것처럼 보이는 숫자 또는 숫자 시퀀스를 의미하며, 컴퓨터 과학에서 의사 난수와 진 난수로 구분된다. 의사 난수는 결정론적 알고리즘에 의해 생성되지만, 충분히 예측하기 어렵다면 난수로 간주될 수 있으며, 진 난수는 물리적 현상을 기반으로 생성되어 예측 불가능성을 가진다. 컴퓨터에서는 주로 의사 난수를 사용하며, C, C++, 자바, 파이썬, 펄 등 다양한 프로그래밍 언어에서 난수를 생성하는 방법을 제공한다. 난수열은 이산 균등 분포, 연속 균등 분포, 베르누이 분포, 정규 분포 등 다양한 확률 분포를 가질 수 있으며, 난수 생성에는 제곱 중앙값 방법, 선형 합동법, 메르센 트위스터 등의 알고리즘이 사용된다. 난수와 관련된 문제점 및 조작 가능성에 대한 윤리적 고려도 존재하며, 난수 결함은 현실 세계에 실질적인 영향을 미칠 수 있다.

더 읽어볼만한 페이지

  • 암호학 - 양자 컴퓨터
    양자 컴퓨터는 양자역학적 현상을 이용하여 정보를 처리하는 컴퓨터로, 큐비트를 통해 0과 1을 동시에 표현하여 특정 연산에서 기존 컴퓨터보다 빠른 속도를 보이며 암호 해독, 신약 개발 등 다양한 분야에 혁신을 가져올 것으로 기대된다.
  • 암호학 - 암호화
    암호화는 정보를 보호하기 위해 사용되는 기술로서, 단순한 문자 치환 방식에서 시작하여 현대에는 강력한 암호화 표준과 다양한 종류로 발전했으며, IT 시스템 전반에 적용되지만, 사이버 공격과 양자 컴퓨팅의 발전에 대한 대응이 필요한 기술이다.
난수
구글 지도
기본 정보
정의임의성을 가진 수의 배열
유형
참 난수물리적 과정 기반 (예: 대기 잡음)
의사 난수알고리즘 기반 (예: 의사 난수 생성기)
사용 분야
시뮬레이션몬테카를로 방법
암호학암호 키 생성, nonce 등
통계학표본 추출 등
게임게임 결과, 인공지능 행동, 아이템 드롭율 등
생성 방법
물리적 방법대기 잡음, 방사능 붕괴 등
알고리즘 방법선형 합동 생성기, 메르센 트위스터
하드웨어 방법하드웨어 난수 생성기 (TRNG)
통계적 특성
균등 분포모든 값이 동일한 확률로 나타남
독립성이전 값들이 다음 값에 영향을 미치지 않음
재현성의사 난수의 경우, 초기값에 따라 동일한 수열 생성 가능
역사
고대주사위, 동전 던지기 등
20세기 초통계학, 몬테카를로 방법 적용
현대컴퓨터 과학, 암호학 등 광범위 사용
한국어
로마자 표기nan-su
다른 이름임의의 수열, 무작위 수열
일본어
로마자 표기ran-sū
다른 이름乱数
영어
로마자 표기Random number
다른 이름random number, random numbers

2. 의사 난수와 진 난수

컴퓨터는 결정론적인 기계이므로, 본질적으로 예측 불가능한 '진짜' 난수를 만드는 것은 불가능하다. 대신, 컴퓨터는 의사 난수 생성 알고리즘을 사용하여 마치 무작위처럼 보이는 숫자를 만들어낸다. 이 알고리즘은 특정한 초기값(시드, seed)을 바탕으로 계산을 수행하여 난수처럼 보이는 수열을 생성한다.

의사 난수와 진 난수의 특징은 다음과 같이 비교할 수 있다.

구분의사 난수 (Pseudorandom Number)진 난수 (True Random Number)
생성 방식결정론적인 알고리즘 (예: 선형 합동법, 메르센느 트위스터)비결정론적인 물리적 현상 (예: 방사성 붕괴, 열잡음)
예측 가능성초기값(시드)을 알면 예측 가능예측 불가능
사용 분야시뮬레이션, 암호학암호학, 복권 등 높은 수준의 무작위성이 필요한 분야
하드웨어 필요 여부불필요전용 하드웨어 필요 (예: 하드웨어 난수 생성기)



도널드 크누스가 개발한 피셔-예이츠 셔플(리스트 섞기 알고리즘)과 같이, 난수는 알고리즘에서 자주 사용된다.[1]

1999년에는 펜티엄 III에 하드웨어 기반 난수 생성기가 추가되기도 했다.[2][3] 이는 여러 발진기의 출력을 결합하여 불규칙한 파형을 만들고, 이를 비동기적으로 샘플링하는 방식으로 작동했다.[4]

2. 1. 의사 난수 (Pseudorandom Number)

컴퓨터 과학에서 말하는 난수는 대부분 결정론적인 방법으로 생성된다. 특정 입력이나 조건에 따라 무작위로 선택된 것처럼 보이는 난수 또는 난수열이 생성되지만, 그 생성 조건이나 입력이 같다면 결과값은 항상 같다. 이러한 난수를 의사 난수라고 부른다.[1]

컴퓨터는 계산된 결과만으로 난수를 생성할 수 있는데, 이 값은 입력값에 의해 결정되기 때문에 진정한 난수를 생성할 수 없다. 대신, 컴퓨터는 최초 시동 시 생성된 난수표를 보관한다. 하지만 프로그래밍에서 매번 같은 방법으로 이 값을 가져오면 항상 같은 값이 나오므로, '씨앗 값(Seed)'이라는 수를 인자로 주어 매번 다른 의사 난수를 추출한다. 이 씨앗 값은 주로 현재 시간을 이용한다. 현재 시간은 매 순간 바뀌고, 한 번 지나간 시간은 다시 돌아오지 않기 때문에 이전의 의사 난수열을 재현하는 것이 불가능하다. 또한, 시간이 밀리초 단위로 표현된다면 사람에 의한 임의적 조작도 사실상 불가능해진다.

결정적 오토마타인 컴퓨터에서는 결정적인 계산으로만 수열을 만들 수 있다. 하지만 결정적인 계산으로 만들어진 수열이라도, 주사위 등으로 만들어진 난수열을 근사한 수열을 생성할 수 있는데, 이를 의사난수열이라고 한다. Deterministic Random Bit Generator (DRBG)라는 용어도 사용된다.

의사 난수열 생성은 이론적으로 컴퓨터 등장 이전에도 수작업으로 가능했지만, 실제로는 컴퓨터 이후에 발전했다. 대표적인 생성 방법으로는 제곱 중앙값 방법, 선형 합동법, 선형 귀환 시프트 레지스터, Xorshift, 메르센느 트위스터 등이 있다. 하지만 이들은 모두 암호론적으로 안전하지 않다. 암호론적으로 안전한 의사 난수에 대해서는 암호론적 의사난수 생성기를 참조해야 한다.

2. 2. 진 난수 (True Random Number)

알고리즘에서 자주 사용되는 난수는 결정적(deterministic) 계산으로 만들어진 의사난수열이 아닌, 본질적으로 확률적인 자연 현상·물리 현상을 기반으로 만들어지는 난수열을 의미한다. 이를 "진정한 난수", "자연 난수", "물리적 난수" 등으로 부르며, 비결정적이라는 점을 강조하여 NRBG(Non-deterministic Random Bit Generator)라고도 한다.[11]

진 난수는 주로 원자핵의 방사성 붕괴로 방출된 방사선의 계수나 시간 간격, 전기 저항기 양단에 나타나는 열잡음 등의 화이트 노이즈나 핑크 노이즈, 반도체 소자의 지연 시간 차이, 빛의 굴절에서 광자의 분산 등과 같은 자연 현상을 이용하여 발생시킨다.[11]

1999년, 펜티엄 III에 하드웨어 기반 난수 생성기 기능이 추가되었다.[2][3] 이는 여러 개의 발진기 출력을 결합하고 그 불규칙한 파형을 비동기적으로 샘플링하는 방식으로 작동했다.[4]

최근 IoT 등 보안 수준을 높여야 하는 상황에서 암호화를 위해 더 좋은 난수가 필요하게 됨에 따라, 진 난수에 대한 수요가 증가하고 있다. 이에 따라 CPU 제조업체인 인텔은 CPU 내부에 진 난수 생성 기능을 통합하기도 한다.

컴퓨터에서 의사난수열이 아닌 난수열을 이용하려면 외부 엔트로피를 입력받기 위한 전용 하드웨어가 필요하다. 이러한 하드웨어 난수 생성기를 내장한 CPU나 칩셋, OS에 의해 키보드의 타건 타이밍 등에서 난수가 생성되는 의사 장치 등이 존재한다.

3. 의사 난수 생성 방법

컴퓨터 과학 분야에서 난수는 보통 결정론적인 방법으로 생성된다. 특정 입력이나 조건에 따라 무작위로 선택된 것처럼 보이는 난수 또는 난수열이 생성되며, 그 생성 조건이나 입력이 같다면 결과값은 항상 같다. 진정한 의미의 난수는 아니지만, 결과값이 충분히 추측되기 어렵다면 어느 정도 난수로서 의미를 가질 수 있다.[1]

컴퓨터로 생성된 모든 난수는 의사(擬似) 난수이다. 컴퓨터는 계산된 결과만으로 난수를 생성할 수 있는데, 이 결과는 입력값에 의해 결정되므로 이 값으로 난수를 생성할 수 없다. 컴퓨터 최초 시동 시 난수표가 생성되어 보관된다. 하지만 프로그래밍에서 매번 같은 방법으로 이 값을 가져오면 항상 같기 때문에, 최초 호출을 제외하고는 난수라고 볼 수 없다. 그래서 보통 씨앗 값(Seed)을 인자로 다르게 주어 매번 다른 의사난수를 추출한다. 씨앗 값은 보통 현재 시간을 이용한다. 매 순간 시간이 바뀌고, 지나간 시간은 다시 돌아오지 않으므로 이전의 의사난수(열)는 재현 불가능하다. 밀리초 단위로 표현된다면 사람에 의한 임의 조작도 사실상 불가능하다.[1]

의사난수를 생성하려면 변하는 입력(조건)과 함수 두 가지가 필요하다.

3. 1. 입력값

매번 다른 난수를 생성하기 위해 매번 달라지는 값이 필요하다. 현재 시간을 얻어서 이용하는 방법 또는 이전 결과 값(난수 값)을 다시 입력으로 넣는 방법 등 다양한 방법이 있다.[1]

3. 2. 함수

의사난수를 생성하기 위해서는 변하는 입력(조건)과 함수, 두 가지가 필요하다. 함수는 입력값을 이용한 계산을 통해 난수를 생성하는 역할을 하며, 입력값은 매번 다른 난수를 생성하기 위하여 매번 달라져야 한다. 입력값을 다르게 하는 방법은 현재 시간을 얻어서 이용하는 방법 또는 이전 결과 값(난수 값)을 다시 입력으로 넣는 방법 등 다양한 방법이 있다.

의사난수열의 생성은 이론적으로(수학적으로)는 컴퓨터 등장 이전에도 수작업으로 가능했지만, 실제로는 컴퓨터 이후에 발전했다. 대표적인 생성 방법으로는 제곱 중앙값 방법, 선형 합동법, 선형 귀환 시프트 레지스터, Xorshift, 메르센 트위스터 등이 있다. 이들은 모두 암호론적으로 안전한 것이 아니다. 암호론적으로 안전한 의사난수에 대해서는 암호론적 의사난수 생성기를 참조한다.

4. 프로그래밍 언어에서의 의사 난수 발생

의사난수열 생성은 이론적(수학적)으로는 컴퓨터 등장 이전에도 수작업으로 가능했지만, 실제로는 컴퓨터 이후에 발전했다. 대표적인 생성 방법으로는 제곱 중앙값 방법, 선형 합동법, 선형 귀환 시프트 레지스터, Xorshift, 메르센느 트위스터 등이 있다. 이들은 모두 암호론적으로 안전한 것이 아니므로, 암호론적으로 안전한 의사난수에 대해서는 암호론적 의사난수 생성기를 참조해야 한다.[16]

컴퓨터에서 의사난수열이 아닌 난수열을 이용하려면 외부 엔트로피를 입력받기 위한 전용 하드웨어 등이 필요하다. 그러한 하드웨어 난수 생성기를 내장한 CPU나 칩셋, OS에 의해 키보드의 타건 타이밍 등에서 난수가 생성되는 의사 장치 등이 존재한다. 이러한 난수 생성 방법은 컴퓨터의 역사보다 오래되었으며, 컴퓨터가 보급되기 전에는 “난수 주사위”(1~10의 모든 숫자가 1/10의 확률로 나타나도록 만들어진 주사위. 3축에 대해 대칭인 10면체는 만들 수 없으므로 정이십면체의 면에 같은 번호를 두 개씩 붙인 것이 일반적으로 사용됨)나 봉투에 넣은 난수 카드를 뽑는 하이햇 방식 등으로 생성하였다.

4. 1. C

C 표준 라이브러리 헤더 파일인 `stdlib.h`에는 난수 생성을 위한 `rand()` 함수가 포함되어 있다.[16] `rand()` 함수는 별도로 시드(seed)를 설정하지 않으면 동일한 값만 반복해서 출력하므로, `srand()` 함수를 사용하여 시드를 설정해야 한다. `srand()` 함수의 원형은 `void srand(unsigned seed)`이므로, 시드로 사용할 값을 `unsigned` 형으로 변환하여 전달한다.

다음은 C 언어에서 난수를 생성하는 예시 코드이다.

```c

#include

#include

#include //time() 함수를 사용하기 위한 헤더 파일 포함

int main(void)

{

int random_variable;

srand((unsigned int)time(NULL)); //시간을 시드값으로 사용

random_variable = rand()%100; //0 ~ 99 사이의 난수를 반환

printf("%d\n", random_variable);

return 0;

}

```

위 코드에서 `time(NULL)`은 현재 시간을 반환하는 함수이며, 이를 시드값으로 사용하여 `srand()` 함수를 호출한다. 그 후 `rand()` 함수를 호출하여 난수를 생성하고, `%100` 연산을 통해 0부터 99 사이의 난수를 얻는다.

의사난수가 아닌 난수를 컴퓨터에서 사용하려면 외부 엔트로피를 입력받기 위한 전용 하드웨어 등이 필요하다. 이러한 하드웨어 난수 생성기를 내장한 CPU나 칩셋, OS에 의해 키보드의 타건 타이밍 등에서 난수가 생성되는 의사 장치 등이 존재한다.

4. 2. C++

C++11 표준 이전에는 ``을 포함하여 C언어의 `rand` 함수를 그대로 사용하였으나, C++11 표준부터는 `` 헤더 파일을 통해 다양한 난수 생성 엔진과 분포를 제공한다.

```cpp

#include

#include

int main(void)

{

std::random_device generator; // 하드웨어 기반 난수 생성

std::mt19937 engine(generator()); // 난수 생성 엔진. std::mt19937은 메르센 트위스터 방식

std::uniform_int_distribution random(1, 100); // 1부터 100까지의 정수 난수 분포

std::cout << random(engine) << std::endl;

return 0;

}

```

`std::random_device`를 사용하여 하드웨어 기반 난수를 생성할 수 있다. `std::mt19937` (메르센 트위스터) 엔진을 사용하는 것이 일반적이다.[1]

의사난수가 아닌 난수를 생성하기 위해서는 하드웨어 난수 생성기를 이용해야 한다.[1]

4. 3. 자바

`java.lang.Math` 클래스의 `random()` 함수를 사용하면 0에서 1 사이의 소수 난수를 얻을 수 있다. 보통 `(int)(Math.random() * 10)`과 같이 형변환하여 사용한다.[1]

`java.util.Random` 클래스를 사용하여 난수를 생성할 수도 있다. `Random` 클래스 내 `nextInt()`, `nextDouble()` 등의 메소드를 사용해 난수의 범위를 지정할 수 있다.[1]

4. 4. 파이썬

python

import random

Number = random.random() # 0에서 1사이의 소수를 반환

print(Number)

Number = random.randrange(1, 7) # randrange(a, b)형태로 사용하며 a이상 b미만의 수를 리스트로 생성

print(Number)

```

`random` 모듈을 사용하여 난수를 생성한다. `random.random()` 함수는 0과 1 사이의 난수를 반환한다. `random.randrange()` 함수를 사용하여 특정 범위의 정수 난수를 생성할 수 있다.[1]

4. 5. Perl

`rand(10)`과 같이 쓰면 0에서 10 사이의 실수를 반환한다.[1] 보통 `int(rand(10))`과 같이 사용하여 소수부를 제거하고 사용한다.[1]

5. 난수열의 종류

난수열은 값과 확률분포에 따라 분류된다.

5. 1. 이산 균등 분포 (Discrete Uniform Distribution)

많은 프로그래밍 언어에서는 0부터 최대값까지의 정수에 균일하게 분포하는 난수를 생성하는 함수가 표준으로 제공된다. 이를 기반으로 가공함으로써 다양한 분포를 갖는 난수를 만들 수 있다. 그러나 구현에 사용되는 알고리즘에 따라 주기와 난수성(즉, 난수의 "질")에는 차이가 있다. 예를 들어 C++11 표준 라이브러리에 구현되어 있는 메르센느 트위스터 엔진(std::mt19937)은 219937-1(24번째 메르센느 소수, 약 4.315×106001)이라는 매우 긴 주기를 갖지만, C언어 표준 라이브러리의 `rand()` 함수나 자바의 `java.util.Random` [12], .NET Framework 기본 클래스 라이브러리의 `System.Random` [13] 등과 같이, 구현은 간편하지만 하위 자릿수가 규칙성을 갖거나, 2차원 이상에서는 분포에 상관이 발생하는 선형 합동법이 사용되는 경우가 많다.

5. 2. 연속 균등 분포 (Continuous Uniform Distribution)

연속 균등 분포(Continuous Uniform Distribution영어)는 어떤 유한 구간을 나누어 그 구간 내에서 모든 실수가 같은 확률(농도)로 나타나는 연속 균등 분포를 따르는 난수이다.

어떤 범위의 정수값을 취하는 난수열을 발생시켜, 그것을 범위의 너비로 나누는 것으로 [0,1](0 이상 1 이하)이나 [0,1)(0 이상 1 미만)의 균일 난수에 가까운 것을 얻을 수 있다. 이와 같이 하여 생성한 균일 난수는 원리적으로 유리수만을 포함하기 때문에, 임의의 실수일 수 있는 진정한 균일 난수는 아니다. 컴퓨터에서는 일반적으로 부동소수점수를 다루고, 진정한 실수를 일반적으로 다루는 것은 어렵기 때문에, 진정한 균일 난수를 다루는 것은 어렵다.

5. 3. 베르누이 분포 (Bernoulli Distribution)

2진 난수는 0과 1 (또는 -1과 1)이 무작위로 나타나는 베르누이 분포를 따르는 난수이다. 스트림 암호나 확산 스펙트럼 통신에 사용된다.

5. 4. 정규 분포 (Normal Distribution)

정규 분포를 따르는 난수이다. 정규 난수는 공학에서 백색 가우스 잡음으로 이용된다.[14]

GNU Scientific Library 문서에 따르면, 정규 난수를 생성하는 방법으로는 역함수 샘플링 방법, 박스-뮬러 방법, ziggurat algorithm|지그라트 알고리즘영어, Marsaglia polar method|마르사글리아 방법영어 등이 있으며, 대부분의 경우 지그라트 방법이 가장 빠르다.[14]

5. 4. 1. 박스-뮬러 방법 (Box-Muller Method)

박스-뮬러 변환을 사용하면 두 개의 독립적인 균등 분포 난수를 통해 두 개의 표준 정규 분포 난수를 생성할 수 있다.[15]

(0, 1] 구간에서 균일하게 분포된 두 난수 α와 β를 다음과 같이 변환한다.

  • √(-2⋅ln α)⋅sin(2πβ)
  • √(-2⋅ln α)⋅cos(2πβ)


이렇게 변환하면 서로 상관관계가 없는, 표준 정규 분포 N(0, 1)을 따르는 두 개의 난수를 얻을 수 있다. 여기서 ln은 자연로그를 의미한다.[15]

이 표준 정규 분포 난수에 σ를 곱하고 μ를 더하면, 평균이 μ이고 분산이 σ²인 정규 분포 N(μ, σ²)를 따르는 난수를 얻을 수 있다.

5. 4. 2. 중심 극한 정리를 이용한 방법

중심 극한 정리를 이용하는 방법은 여러 개의 독립적인 균등 분포 난수의 합이 정규 분포에 가까워진다는 원리를 이용한다. 이 방법은 12개의 [0,1] 균일 난수(uniform random number)를 더한 후 6을 빼는 방식으로 자주 사용된다.[15] 12개의 [0,1] 균일 난수를 합하면 분산이 1이 되므로, 6을 빼면 정규 분포에 가까운 확률 분포를 얻을 수 있어 계산이 편리하다.

1990년대 이후 개인용 컴퓨터에는 부동소수점 연산 처리 장치가 내장되어 삼각함수나 로그함수 연산이 빨라졌다. 따라서 정규 난수 하나를 얻기 위해 12번의 균일 난수 생성이 필요한 이 방법보다, 한 번의 균일 난수 생성으로 충분한 박스-뮬러 방법이 일반적으로 더 많이 사용된다.

하지만 매우 빠른 의사난수 생성기를 사용하면 중심 극한 정리를 이용한 방법으로도 박스-뮬러 방법만큼 빠른 정규 난수 생성이 가능하다.

보드게임이나 TRPG 등에서 여러 개의 주사위 눈의 합계를 사용하는 경우가 많은데, 이는 중심 극한 정리를 통해 정규 난수(매우 대략적인 근사)를 생성하여 이용하는 것이라고 할 수 있다.

6. 난수 생성 알고리즘 및 구현

도널드 크누스(Donald Knuth)가 1964년에 개발한 리스트 섞기 알고리즘[1](일반적으로 '크누스 셔플' 또는 1938년에 그들이 수행한 작업에 기반한 '피셔-예이츠 셔플'(Fisher–Yates shuffle)로 알려짐) 등 다양한 난수 생성 알고리즘이 존재한다.

1999년, 펜티엄 III에 하드웨어 기반 난수 생성기 기능이 추가되었다.[2][3] 이는 "여러 개의 발진기가 출력을 결합하고 그 불규칙한 파형을 비동기적으로 샘플링하는 것"으로 설명되었다.[4] 그러나 당시 56비트 이상의 수출 통제가 있던 시점에 이 난수는 32비트에 불과했으므로 최첨단 기술이 아니었다.[5]

의사난수열이 아닌 난수열을 컴퓨터에서 이용하려면 외부의 엔트로피를 입력하기 위한 전용 하드웨어 등을 이용해야 한다. 그러한 하드웨어 난수 생성기를 내장한 CPU나 칩셋, OS에 의해 키보드의 타건 타이밍 등에서 난수가 생성되는 의사 장치 등이 존재한다. 이러한 난수의 생성 방법은 컴퓨터의 역사보다 오래되었으며, 컴퓨터가 보급되어 이용 가능해지기 전에는 “난수 주사위”(1~10의 모든 숫자가 1/10의 확률로 나타나도록 만들어진 주사위. 3축에 대해 대칭인 10면체는 만들 수 없으므로 정이십면체의 면에 같은 번호를 두 개씩 붙인 것이 일반적으로 사용됨)나 봉투에 넣은 난수 카드를 뽑는 하이햇 방식 등으로 생성하였다.

의사난수열의 생성은 이론적으로(수학적으로)는 컴퓨터 등장 이전에도 수작업으로 가능했지만, 실제로는 컴퓨터 이후에 발전했다. 대표적인 생성 방법으로는 제곱 중앙값 방법, 선형 합동법, 선형 귀환 시프트 레지스터, Xorshift, 메르센느 트위스터 등이 있다. 이들은 모두 암호론적으로 안전한 것이 아니다. 암호론적으로 안전한 의사난수에 대해서는 암호론적 의사난수 생성기를 참조한다.

7. 난수와 관련된 문제점 및 윤리적 고려

난수의 결함은 현실 세계에 실질적인 영향을 미칠 수 있다.[9][10] 한 연구에 따르면, 대규모 서비스에서 난수 생성기의 문제로 인해 약 27,000명의 고객(전체의 99.8%)이 부정적인 영향을 받았다.[9]

더불어민주당은 온라인 게임, 암호화폐 거래 등에서 난수 조작으로 인한 피해를 방지하기 위한 법적, 제도적 장치 마련을 강조하고 있다.

참조

[1] 논문 Algorithm 235: Random permutation 1964-07-01
[2] 잡지 Privacy's Random Nature 1999-07-12
[3] 잡지 Hardwiring Security https://www.wired.co[...] 1999-01-01
[4] 웹사이트 The Pentium III RNG http://www.ciphersby[...] 1999-01-21
[5] 웹사이트 Unpredictable Randomness Definition https://www.irisa.fr[...]
[6] 잡지 Javatalk: Horseshoes, hand grenades and random numbers 1998-01-01
[7] 뉴스 NYPD Bad Cop's Illegal Search Mars Career https://www.latimes.[...] 1995-04-16
[8] 문서 A pre-compiled list of apartment numbers would be a violation thereof.
[9] 뉴스 Flaw Found in an Online Encryption Method https://www.nytimes.[...] 2012-02-14
[10] 뉴스 The man who cracked the lottery https://www.nytimes.[...] 2018-05-03
[11] 문서 量子力学的現象に比べると、サイコロなどはかなり確定的であるという主張もあるかもしれない。
[12] 웹사이트 Random (Java Platform SE 8 ) https://docs.oracle.[...]
[13] 웹사이트 Random Class (System) https://msdn.microso[...]
[14] 웹사이트 GNU Scientific Library – Reference Manual: The Gaussian Distribution https://www.gnu.org/[...]
[15] 문서 奥村(1991) P133-134
[16] 웹인용 srand - cppreference.com http://en.cppreferen[...] 2017-11-21



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com