본문 바로가기
파이썬/파이썬기본문법

파이썬 numpy random numbers

by flycoding 2023. 12. 18.
반응형

무작위 수(random number)란 무엇인가?

난수는 매번 다른 수를 의미하는 것이 아니다. 난수는 논리적으로 예측할 수 없는 것을 의미한다.

 

의사 난수와 진짜 난수(Pseudo random and True random)

컴퓨터는 프로그램에서 작동하고 프로그램은 명령어의 결정적인 집합이므로 임의의 숫자를 생성하기 위한 알고리즘이 있어야 한다는 것을 의미한다.
만약 난수를 생성하는 프로그램이 있다면 그것은 예측될 수 있으므로, 그것은 정말로 난수가 아니다.

생성 알고리즘을 통해 생성된 난수를 의사 난수(pseudo random number)라고 한다.

진짜 난수를 만들 수 있을까?

네. 컴퓨터에서 진짜 난수를 생성하기 위해서는 어떤 외부 소스로부터 난수 데이터를 얻어야 한다. 이 외부 소스는 일반적으로 키 입력, 마우스 움직임, 네트워크상의 데이터 등이다.

보안(예: 암호화 키)과 관련이 있거나 응용의 기본이 무작위성(예: 디지털 룰렛 휠)인 경우가 아니라면, 우리는 진정한 무작위 번호가 필요하지 않다.

이 튜토리얼에서는 의사 난수를 사용할 것이다.

 

파이썬 numpy 난수

NumPy는 난수로 작업할 수 있는 random 모듈을 제공한다.

0부터 100까지의 임의 정수를 생성한다:

from numpy import random

x = random.randint(100)

print('x = random.randint(100) : ', x)

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 난수(random number) randint 모듈 활용 예제

 

파이썬 numpy 난수 부동소숫점수

랜덤 모듈의 rand() 메서드는 0과 1 사이의 random float를 반환한다.

0에서 1 사이의 random float 생성:

from numpy import random

x = random.rand()

print('x = random.rand() : ', x)

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 난수(random float) rand() 모듈 활용 예제

 

 

파이썬 numpy 랜덤 배열

NumPy에서는 배열을 사용하여 작업하며, 위의 예제에서 얻은 두 가지 방법을 사용하여 무작위 배열을 만들 수 있다.

 

파이썬 numpy 랜덤 배열 정수

randint() 메서드는 배열 모양을 지정할 수 있는 size 매개 변수를 사용한다.

0부터 100까지의 5개의 임의 정수를 포함하는 1-D 배열을 생성한다:

from numpy import random

x=random.randint(100, size=(5))

print('x=random.randint(100, size=(5)) : ', x)

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 랜덤 배열정수 randint, size - 1차원 배열 생성 활용 예제

 

 

각 행이 0부터 100까지의 5개의 임의 정수를 포함하는 3개의 행으로 구성된 2-D 배열을 생성한다:

from numpy import random

x = random.randint(100, size=(3, 5))

print('x = random.randint(100, size=(3, 5)) : \n', x)

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 랜덤 배열정수 randint, size - 2차원배열 생성 활용 예제

 

파이썬 numpy 랜덤 배열 부동소숫점수

rand() 메서드를 사용하면 배열의 모양을 지정할 수도 있다.

5개의 random float가 포함된 1-D 배열을 생성한다:

from numpy import random

x = random.rand(5)

print('x = random.rand(5) : \n',x)

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 랜덤 배열보동소숫점수 float rand, size - 1차원배열 생성 활용 예제

 

 

각 행에 5개의 난수가 포함된 3개의 행이 있는 2-D 배열을 생성한다:

from numpy import random

x = random.rand(3, 5)

print('x = random.rand(3, 5) :\n',x)

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 랜덤 배열보동소숫점수 float rand, size - 2차원배열 생성 활용 예제

 

파이썬 numpy 배열로부터 난수 생성

choice() 방법을 사용하면 값 배열을 기반으로 랜덤 값을 생성할 수 있다.

choice() 메서드는 배열을 매개 변수로 사용하고 값 중 하나를 랜덤하게 반환한다.

배열의 값 중 하나를 반환한다:

from numpy import random

x = random.choice([3, 5, 7, 9])

print('x = random.choice([3, 5, 7, 9]) : ',x)

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 배열로부터 난수 생성

 

 

또한 choice() 메서드를 사용하면 값 배열을 반환할 수 있다.

size 매개변수를 추가하여 배열의 모양을 지정한다.

배열 매개변수(3, 5, 7, 9)의 값으로 구성된 2-D 배열을 생성한다:

from numpy import random

x = random.choice([3, 5, 7, 9], size=(3, 5))

print('x = random.choice([3, 5, 7, 9], size=(3, 5)) : \n',x)

위의 코드를 실행하면 아래 그림과 같다.

파이썬 numpy 난수 choice() 함수 활용 예제

 

이번 글에서는 파이썬 numpy의 난수(random number) 생성 관련해서 살펴보았다.

파이썬 numpy 난수는 정수, 부동소숫점수, 정수나 부동소숫점수 등을 발생하여 배열을 생성하는 실습을 하였다.

또한 반대로 배열로부터 난수를 생성하는 choice() 메소드를 실습하였다.

꼭 손으로 눈으로 머리로 익히며 실습하기를 바란다.

모두 화이팅입니다.!!!

 

출처 : 이 글의 출처는 w3schools사이트를 참고하였으며 필자가 추가하여 정리한 글입니다.

반응형

'파이썬 > 파이썬기본문법' 카테고리의 다른 글

파이썬 numpy 랜덤 수열  (0) 2023.12.20
파이선 numpy 랜덤 데이터 분포  (0) 2023.12.19
파이썬 numpy 배열 필터  (0) 2023.12.17
파이썬 numpy 배열 정렬  (0) 2023.12.16
파이썬 numpy 배열 검색  (0) 2023.12.15

댓글