파이썬에서 간단하게 랜덤하게 수를 뽑을 때 이용하는 randint와 randrange에 대해서 알아봅시다. 문제를 출제하기 위해 제너레이터를 만드는 경우에는 거의 100%의 확률로 이용됩니다. 그러니, 잘 알아두는 것이 좋겠습니다.

 


 random에는 randint가 있어요. 1번째 인자가 1이고, 2번째 인자가 6이에요. res에 add를 10000번 하는데요. rd.randint(1,6)의 결과를 계속 set에 추가하는 것을 의미해요. 파이썬에서 set은 중복을 제거하는 자료구조이니, 6이 여러 번 들어가도 1번만 들어가게 될 겁니다.

 

 

 결과는 1, 2, 3, 4, 5, 6이 나옵니다. 즉, randint(a, b)는 a 이상 b 이하의 랜덤한 수가 나옵니다.

 

 

 2개의 수만 받고 있음을 알 수 있어요. 저는 파이썬으로 제너레이터를 만드는 경우도 많아요. c나 c++로 만들기에는 힘들 때 파이썬을 고려하는 편인데요. 파이썬을 이용해서 제너레이터를 만들 때 이 함수를 많이 쓰는 편입니다. 딱 봐도 a와 b가 포함되겠거니. 하고 직관적으로 알아 먹을 수 있기 때문이에요. 복잡하게 a, b+1 이렇게 쓸 필요도 없고요.

 

 


 다음에 randrange를 보겠습니다.

 

 이번에도 똑같이 10000번 rd.randrange(1, 6+1)의 결과를 res에 계속 넣었습니다. 그리고 res의 결과를 출력하였습니다.

 

 

 그랬더니, 1, 2, 3, 4, 5, 6이 나왔습니다. 이는 1이상 1+6미만의 수가 랜덤하게 뽑혔다는 이야기입니다. 뭔가 어려워 보이는데요. for문 쓸 때 range랑 같이 써먹었을 겁니다.

 

 이렇게 말입니다. 저 프로그램은 i가 1부터 9까지 돌면서, i의 값을 출력하는 프로그램입니다.

 

 

 10이 출력되지 않았음을 알 수 있어요. 이것과 마찬가지로 보시면 되어요. 어찌 되었던 randrange(a, b)는 a 이상 b 미만인 수가 랜덤으로 나온다. 정도만 보시면 됩니다.

 

 그런데 step이 있어요. 이건 또 뭘까요? 이것은 얼마 만큼 뛸 것이냐를 의미합니다. default 값은 1입니다. 그래서, start의 값이 1이고, stop이 6인 경우, 1, 2, 3, 4, 5 중 하나가 랜덤하게 뽑히게 됩니다.

 

 

 이건 어떨까요? 1이상 6미만인 수이긴 한데, 시작 수가 1입니다. 그리고 2씩 뜁니다. 그러면 1, 3, 5 이렇게 되겠네요. 이 중에서 하나가 랜덤하게 나오는 것이므로, 결론적으로 1, 3, 5 중 하나가 뽑히게 됩니다.

 

 결과는 위와 같습니다.