[PYTHON] 파이썬의 무작위 반복
PYTHON파이썬의 무작위 반복
숫자 목록을 순차적으로 반복하려면 다음과 같이 작성하십시오.
for i in range(1000):
# do something with i
그러나 범위 (0..999)의 숫자 목록을 무작위로 반복하고 싶다면 어떻게해야할까요? 모든 반복에서 임의의 이전 반복에서 선택되지 않은 숫자를 임의로 선택해야하며 범위 (0..999)의 모든 숫자를 반복 할 필요가 있습니다.
그렇게하는 법을 아십니까?
해결법
-
==============================
1.random.shuffle ()을 사용하여 목록을 임의로 섞을 수 있습니다.
random.shuffle ()을 사용하여 목록을 임의로 섞을 수 있습니다.
import random r = list(range(1000)) random.shuffle(r) for i in r: # do something with i
그런데 다른 프로그래밍 언어의 정수 범위에서 for 루프를 사용하는 많은 경우 Python에서 반복 할 "대상"을 직접 설명 할 수 있습니다. 예를 들어, i의 값을 사용하여 목록 요소에 액세스하려면 목록을 직접 더 잘 섞어 야합니다.
lst = [1970, 1991, 2012] random.shuffle(lst) for x in lst: print x
참고 : random.shuffle ()을 사용할 때는 다음 경고를 유의해야합니다 (docs에서 가져옴 :
-
==============================
2.사람들은 종종 모듈화 기회를 놓칩니다. "반복 무작위"아이디어를 캡슐화하는 함수를 정의 할 수 있습니다.
사람들은 종종 모듈화 기회를 놓칩니다. "반복 무작위"아이디어를 캡슐화하는 함수를 정의 할 수 있습니다.
def randomly(seq): shuffled = list(seq) random.shuffle(shuffled) return iter(shuffled)
그때:
for i in randomly(range(1000)): #.. we're good to go ..
-
==============================
3.파이썬 생성기와 Fisher-Yates 셔플을 시연합니다.
파이썬 생성기와 Fisher-Yates 셔플을 시연합니다.
import random def shuffled(sequence): deck = list(sequence) while len(deck): i = random.randint(0, len(deck) - 1) # choose random card card = deck[i] # take the card deck[i] = deck[-1] # put top card in its place deck.pop() # remove top card yield card
당신은 당신이 사용하는만큼 난수를 생성합니다. 하지만 솔직히 말해서 아마 많은 양을 절약 할 수 없을 것이므로 일반적으로 random.shuffle을 사용해야합니다.
참고 : 상단 카드를 선택하면 deck [i] = deck.pop ()이 안전하지 않으므로 상단 제거는 두 단계로 수행됩니다.
-
==============================
4.numpy에는 random.permutation ()이라는 함수가 있습니다. 코드가 다음과 같이 보일 것입니다.
numpy에는 random.permutation ()이라는 함수가 있습니다. 코드가 다음과 같이 보일 것입니다.
from numpy.random import permutation for i in permutation(1000): # do something with i
-
==============================
5.random.shuffle 메서드를 사용합니다.
random.shuffle 메서드를 사용합니다.
itrange = list(range(100)) random.shuffle(itrange) for i in itrange: print i
from https://stackoverflow.com/questions/9252373/random-iteration-in-python by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] WhiteNoise가 활성화되면 'collectstatic'명령이 실패합니다. (0) | 2018.11.14 |
---|---|
[PYTHON] Python 값에 대해 "해시 가능"합니다. (0) | 2018.11.14 |
[PYTHON] Errno 9 얻기 : 파이썬 소켓에 잘못된 파일 기술자 (0) | 2018.11.14 |
[PYTHON] 스레드에서 클래스 메소드 실행 (파이썬) (0) | 2018.11.14 |
[PYTHON] 모듈이 설치되어 있지 않은지 확인하십시오. (0) | 2018.11.14 |