본문 바로가기

파이썬/난수 생성

파이썬 랜덤(Random) 뽑기 - 균등분포

반응형

Chat GPT 본문요약

파이썬 랜덤 실수 생성 5줄 요약
random.random() 함수 사용: 0~1 사이 랜덤 실수 생성
random.random() 계산 활용: 특정 범위 랜덤 실수 생성
random.randrange() 함수 사용: 특정 간격 랜덤 정수 생성
random.uniform() 함수 사용: 특정 간격 랜덤 실수 생성
random.uniform()의 범위 끝은 부동소수점 자리올림에 따라 포함/불포함될 수 있음

 

 

랜덤 실수 생성

random() 함수 사용

import random as r

# 0~1 사이의 랜덤 실수 값 생성 
# 자료형 : 실수 (Float) 
# 분포 : 균등분포 (Uniform) 
# 범위 : [0,1)  ---> 0 포함, 마지막 1은 불포함
rand1 = r.random()

# 10~100 사이의 랜덤 실수 값 생성
# 자료형 : 실수 (Float) 
# 분포 : 균등분포 (Uniform) 
# 범위 : [10,100)
rand2 = r.random()*90 + 10

# A~B 사이의 랜덤 실수 값 생성 (A < B)
# 자료형 : 실수 (Float) 
# 분포 : 균등분포 (Uniform) 
# 범위 : [A,B)
A = 5 
B = 8
rand3 = r.random()*(B-A) + A

 

 

파이썬 특정 간격으로 랜덤 정수 생성

randrange() 함수 사용, 정수끼리 간격 조절 가능 

예를 들어 5,10,15,20, 25, 30 중에서 랜덤으로 선택 가능

10이상 100 미만의 정수를 1 간격으로 랜덤생성 (총 10만개)

import random as r
import matplotlib.pyplot as plt

# 10 ~ 100 사이의 정수 뽑기 
# 분포 : 균등분포 (Uniform)
# 범위 : [10,100) -- 100 불포함 
# 간격 : 1 
rand = [r.randrange(10,100,1) for i in range(100000)] 
plt.hist(rand, bins=201)
ax = plt.gca()
xtick = ax.set_xticks([i for i in range(0,101,10)])
ax.set_xlabel("random integers")
ax.set_ylabel("frequency")
plt.title("randrange(10,100,1)")

 

 

10이상 100 미만의 정수를 5 간격으로 생성 (총 10만개)

import random as r
import matplotlib.pyplot as plt

# 10 ~ 100 사이의 정수 뽑기 
# 분포 : 균등분포 (Uniform)
# 범위 : [10,100) -- 100 불포함 
# 간격 : 5
rand = [r.randrange(10,100,5) for i in range(100000)] 
plt.hist(rand, bins=201)
ax = plt.gca()
xtick = ax.set_xticks([i for i in range(0,101,10)])
ax.set_xlabel("random integers")
ax.set_ylabel("frequency")
plt.title("randrange(10,100,5)")

 

 

 

파이썬 특정 범위 안의 랜덤 실수 생성

uniform() 함수 사용, 범위 끝은 부동소수점 자리올림에 따라 포함 또는 불포함 될 수 있음

예를 들어 10~100 사이의 랜덤 실수를 균등 분포로 생성

10이상 100이하(혹은 미만) 부동소수점 난수 균등분포 생성

import random as r
import matplotlib.pyplot as plt

# 10 ~ 100 사이의 실수 뽑기 
# 분포 : 균등분포 (Uniform)
# 범위 : [10,100) -- 100은 부동소수점 자리올림에 따라 포함되거나 포함되지 않을 수 있음 
# 간격 : N/A
rand = [r.uniform(10,100) for i in range(100000)] 
plt.hist(rand, bins=500)
ax = plt.gca()
xtick = ax.set_xticks([i for i in range(0,101,10)])
ax.set_xlabel("random floating point numbers")
ax.set_ylabel("frequency")
plt.title("uniform(10,100) - floating point numbers")

 

 

반응형