프로그래밍 농장

파이썬 입문 -5일차( 랜덤함수 ) 본문

Python

파이썬 입문 -5일차( 랜덤함수 )

Tennessee201 2019. 6. 25.
728x90

 

파이썬의 경우, random함수를 내장하고 있지 않음으로, 모듈함수를 선언해주어야한다.

>> from random import random   

이후, print( random( ) ) 와 같은 출력식을 통하여 random 함수의 값을 출력할수있다. 

random 함수는, 0.0 - 1.0 미만의 난수 하나를 출력해준다. 

random함수 출력예시

 

 

만약, 위의 모듈함수를 선언하지않고 랜덤함수 사용시, 아래와같은 에러메세지가 발생한다.

NameError : name 'random' is not defined

응용법

- 1.0 이상의 더큰 값의 랜덤함수를 출력하고싶다면, 출력식에 원하는만큼의 크기를 곱하여 출력하면 그만큼의 임의의 난수값을 출력시킬수있다.

ex) print ( random( ) * 100 ) 과 같이 응용하여 사용할수있다.

 

- 실수값이 아닌, 정수값으로 랜덤함수를 출력하고싶다면, int 함수를 이용해주면 된다.

   ex) 0부터 10미만의 임의의 정수값 : print( int ( random( ) * 10 ) )

 

-랜덤함수의 시작값을 지정해주고싶다면, 식의 끝에 원하는 시작값을 더해주면된다.                                              

   ex) 1부터 11미만의 임의의 정수값 : print ( int( random( ) * 10 ) +1 )                                                                 ex) 100부터 110미만의 임의의 정수값 : print( int ( random( ) * 10 ) +100 ) 

 

 

randint( )

randint 라는 함수는, 출력되는 난수의 시작과 끝, 즉 범위를 지정해주는 함수이다. 

위와같은 함수를 사용하기위해서는, 모듈함수 >>from random import randint 를 선언해주어야한다. 이 모듈함수는 위의 내용들을 모두포함하고있음으로, 굳이 두번 사용할필요없다.

5~10미만의 정수 난제값을 출력해본 결과

 

randrange( )

randint함수에서 추가로 증가폭을 지정해줄수있다.

모듈함수 >>from random import randrange 를 추가로 선언해주어야한다.

ex) print( randrange(5,10,2))     ->  5~10미만의 2씩증가되는 랜덤값 출력

randrange 함수를 이용하여 5에서 10미만의 2씩증가하는값 출력해본 결과

 

응용) 아스키코드를 활용하여 랜덤한 문자 출력해보기

 

 아래의 아스키코드표를 참고하여, 랜덤한 문자를 출력해보자.

출처 : https://t1.daumcdn.net/cfile/blog/1874D9234BC2D23745

 

풀이

대문자와 소문자가 나누어져 있음으로, 각각의 출력식을 표현하여 출력해본결과이다.

chr 문을 출력식에 넣어서 랜덤한 정수를 문자열로 변환하여주면 출력이 잘 되는것을 확인할수있다.

아스키코드표를 참고하여 출력해본 랜덤한 문자들

 

 

실습예제

1.  1 ~ 100 까지의 랜덤값을 출력하는 코드를 작성하시오.
( randint, randrange 사용 x )

2.  100 ~ 999 까지의 랜덤값을 출력하는 코드를 작성하시오.
( randint, randrange 사용 x )

3.  'A' 부터 'Z' 까지의 임의의 문자를 출력하는 코드를 작성하시오.                                                           ( randint, randrange 사용 x )

4.  1 ~ 99 까지의 랜덤값에 대해 짝수면 True, 홀수면 False 가 출력되는 코드를 작성하시오.


 

 

풀이

 

 

-1번 

>> from random import random                                                                                                                 print ( int ( ( random( ) * 100 ) +1 ) )

random( ) * 100 : 0부터 100미만 지정  ->  +1 : 1부터 101미만 지정  ->  int : 정수값만 출력하게 설정

 

 

-2번

>> from random import random                                                                                                                                 print ( int ( ( random( ) * (1000-100) ) +100 ) )

random( ) * 1000 0부터 1000미만 지정  ->  +100 : 100부터 1000미만 지정  ->  (1000-100) : 밀린 100만큼 -

시작값을 100으로 지정하면서 범위가 1100까지 밀렸으니 100을 뺴주면된다.

 

print ( int ( ( ( random( ) * 1000 )+100 ) ) 으로 식을 작성하면, 시작값을 100으로 지정한것떄문에 100만큼 더 범위가 밀리게 된다.  그러므로 시작값지정으로 밀린 100만큼 뺴주면 정상적으로나온다.

1100까지 범위가 밀려서 나온 오류 예시 

 

 

-3번

>> from random import random
                 print(chr(int((random()*26)+65)))

+65 : 65부터 -> random( ) * 26 : 65+26=90까지(25+1 = 미만포함) -> chr(int(.. : 실수를 정수변환후 문자변환

 

* print(chr(int((random()*26)+65))) 의 범위지정부분에서 26대신 (101-65)를 쓰면 다른 문자도 출력된다.  문자열 출력의 범위가 다르게 나타나는듯하다.

문자열출력의 경우 범위지정을  최대한 간단하게 하는것을 선호하도록하자. 

출력오류 예시 

 

-4번

>> from random import random
     rand = ( int ( random ( ) * 99 )+1 )
     print ( not bool ( rand % 2 ) )

True 는 0일경우이므로, not bool함수를 사용하여 나타낸다. 이후 범위지정문부분과 시작위치를 선언해주면된다.

 

  

 

 

 

 

 

 

-

 

728x90