기본 콘텐츠로 건너뛰기

파이썬에서 랜덤값 사용방법

random은  파이썬에서 랜덤한 숫자를 얻기 위해 사용하는 모듈입니다. 간단히 사용법을 정리해 봤습니다.

1. random.seed()

컴퓨터에서 생성하는 랜덤값은 엄밀히 말하면 완전 랜덤은 아닙니다. 계산식에 의해서 만드는 유사 랜덤 값입니다. 따라서 seed 에 들어가는 숫자가 동일하면 나오는 랜덤 값도 동일합니다. 

별도로 파이썬에선 위 명령을 주지 않아도 import 될때 현재 시간이 seed 가 되어서 적용되지만 원한다면 명시적으로 seed 를 호출할 수 있습니다. seed 에 원하는 숫자를 인자로 사용할 수 있으며 만일 위처럼 인자를 넣지 않을 경우 seed 는 현재시간을 사용합니다.

2. random.random() 

     0.0 <= x < 1.0 사이의 값을 출력합니다.

3. random.uniform(a.4, b.7)

     a.4 <= x < b.7  사이의 값을 출력합니다.

4. random.randrange(b)

     0 <= x < b 사이의 정수를 출력합니다.

5. random.randrange(a,b)

     a <= x < b  사이의 정수를 출력합니다.

6. random.randint(a,b)

     a <= x <= b  사이의 정수를 출력합니다.

>>> import random
>>> random.random()
0.3594656143224264
>>> random.uniform(3.5,4.2)
3.6876359136188914
>>> random.randrange(8,10)
8
>>> random.randint(5,10)
6  

위와 같이 사용하면 됩니다.

>

위의 함수 외에 좀 수고를 덜어 줄 수 있는 함수들도 있습니다. 

만약에 오늘 점심메뉴에 뭘 먹을지 고민된다면....이걸 파이썬의 랜덤에 맡긴다면 다음과 같이 하면 됩니다.

>>> a=['짜장면','피자','라면','된장찌개','김치찌개']
>>> random.choice(a)
'김치찌개'

 

만일 로또 번호를 파이썬의 랜덤함수로 구한다면 어떻게 하면 될까요.

>>> l=[i for i in range(1,46)]
>>> l
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45]
>>> random.shuffle(l)
>>> l
[31, 17, 25, 36, 20, 43, 34, 18, 1, 35, 42, 22, 44, 28, 13, 16, 14, 26, 10, 23, 8, 15, 3, 6, 37, 41, 29, 24, 45, 40, 27, 4, 30, 32, 39, 38, 19, 9, 11, 33, 2, 12, 21, 7, 5]

shuffle 함수로 리스트를 섞었습니다. 앞의 숫자 6개를 사용하면 되겠죠. 

 

좀 더 깔금하게 아예 6개 숫자만 얻는 방법도 있습니다. 

>>> l=[i for i in range(1,46)]
>>> l
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45]
>>> random.sample(l,6)
[36, 10, 18, 32, 22, 26] 

임의의 6개 값을 구해 줍니다. 

 

댓글

이 블로그의 인기 게시물

antix linux 업데이트시 GPG Error

 최근에 가장 가벼운 리눅스를 검색해서 antix 리눅스를 설치해서 테스트 해 보고 있습니다. 역시 가볍긴 가볍더군요. 생각보단 패키지 구성도 괜찮아 보였고요.    설치후 좀 써보고 업데이트를 하는데 GPG Error 가 발생했습니다. GPG 키 관련 문제인것 같아서 검색해 보니 antixforum에 답이 있었습니다.  https://www.antixforum.com/forums/topic/how-to-fix-expired-gpg-key-error/   간단히 적어보자면... http://repo.antixlinux.com/bookworm/pool/main/a/antix-archive-keyring/antix-archive-keyring_20019.5.0_all.deb 위 파일을 받은 다음에 터미널에서... sudo dpkg -i antix-archive-keyring_20019.5.0_all.deb 을 실행해서 설치해 주면 됩니다.    그런다음 업데이트를 시도해 보면 잘 됩니다.   

pygame 에서 이미지 회전하는 방법

 pygame 에서 transform.rotate 를 사용해서 이미지를 회전시켜 보면 생각과는 달리 요상하게 회전합니다.    따라서 이를 해결해 보고자 검색해 보다 다음 링크를 찾았습니다. https://stackoverflow.com/questions/4183208/how-do-i-rotate-an-image-around-its-center-using-pygame/54714144 위 링크를 보면 파이게임의 이미지 회전이 왜 그렇게 이상한지 알 수 있고 답변하신 분이 blitRotate 라는 함수를 만들어 놓아서 이용할 수 있습니다.  제 소스에 가져와서 테스트를 해 봤는데 제 생각대로 회전 하더군요.  def blitRotate(image, pos, originPos, angle):       #calcaulate the axis aligned bounding box of the rotated image     w, h       = image.get_size()     box        = [pygame.math.Vector2(p) for p in [(0, 0), (w, 0), (w, -h), (0, -h)]]     box_rotate = [p.rotate(angle) for p in box]     min_box    = (min(box_rotate, key=lambda p: p[0])[0], min(box_rotate, key=lambda p: p[1])[1])     max_box    = (max(box_rotate, key=lambda p: p[0])[0], max...

브레이크액 수분측정기 구입

알리산 브레이크액 수분측정기 입니다. 이번 세일기간에 구매 했습니다. 가격은 매우 저렴합니다. 몇천원 정도 입니다.     가격이 저렴하기 때문에 측정값의 정확도가 어떨지 모르겠지만, 유튜브의 실험 영상중에는 그럭저럭 괜찮은 결과를 보여주는 것도 있었기 때문에 한번 구매해 봤습니다.  저는 그렇게 까지 정밀하게 실험하기는 너무 귀찮.......아서 그냥 수돗물에 넣어 테스트 해 봤습니다. 수돗물에서는 수분 4% 이상이라고 제대로 측정해 주더군요.  새 브레이크액이 있다면 테스트 해 보겠지만 없어서 그냥 제차의 브레이크액을 테스트 해 봤는데 1% 미만으로 측정을 해 주더군요. 새차 구입하고 한번도 교환해 준적이 없었는데...괜찮은가 봅니다. 측정값이 맞는지는 알 방법이 없어서 정말 괜찮은건지 애매하긴 하지만 제 경우는 그냥 근거없이 신뢰하기로 했습니다. 수돗물은 최소한 제대로 측정한것 같아서 말이죠. ^^; > 브레이크액 측정하려고 뚜껑 열어보시면 거름망이 있어서 그냥은 측정을 할 수 없습니다. 그 거름망을 제거 해야 하는데 이게 좀 어렵습니다.  롱노즈 드라이버와 송곳 같은것을 준비 해야 거름망을 제거 할 수 있습니다. 손상없이 빼내기는.....그닥 손재주가 없는 저는 무리더군요. 저는 빼다가 좀 손상이 되어서 그냥 빼 버렸습니다. 검색해 보니 없어도 큰 문제는 없어 보이더군요.  거름망때문에 생각보다는 난이도가 좀 있는(?) 작업이었습니다. 처음부터 그냥 거름망을 부순다는 마음으로 빼냈으면 훨씬 간단했겠지만요.  가격도 저렴하니 부담없이 한번 구입해서 테스트 해 보는것도 괜찮지 않을까 싶습니다.