제 질문은 : numpy에서 반복되지 않는 난수를 어떻게 만들 수 있습니까?numpy에서 반복되지 않는 난수
list = np.random.random_integers(20,size=(10))
제 질문은 : numpy에서 반복되지 않는 난수를 어떻게 만들 수 있습니까?numpy에서 반복되지 않는 난수
list = np.random.random_integers(20,size=(10))
당신이 NumPy와 사용에 대한 고집하지 않는 경우, 당신은 표준 라이브러리에서 random.sample()
를 사용할 수 있습니다
a = numpy.arange(20)
numpy.random.shuffle(a)
print a[:10]
필요한 숫자 범위를 포함하는 배열을 생성 한 다음 배열의 0 번째 요소가있는 임의의 문자를 반복적으로 바꿔서 임의 순서대로 섞습니다. 이것은 중복 값을 포함하지 않는 무작위 순서를 생성합니다.
결과 임의의 시퀀스의 또 다른 속성은 [특히 임의적이지는 않습니다]입니다 (http : //www.codinghorror .com/blog/2007/12/the-naivete.html의 위험). –
@SvenMarnach - 대부분의 목적을 위해, 그러나, 그것은 충분히 랜덤합니다. 그는 무작위로 원한다면 이중 무작위 접근법을 사용할 수 있습니다. – Polynomial
이것은 무의미합니다. OP는 라이브러리 호출을 사용하여 올바르게 수행 할 수 있습니다. 사용하기 쉽고, 실행 속도가 빠르고, 사용자 정의 버전보다 읽기 쉽습니다. 올바른 알고리즘을 사용할 때 아무런 불이익이 없을 때 잘못된 알고리즘을 사용해야하는 이유를 생각할 수 없습니다. –
I : NumPy와 함께
print random.sample(range(20), 10)
, 당신은 numpy.random.shuffle()
과 슬라이스를 사용해야합니다 지금 numpy.random.sample
이 제대로 작동하지 않는다고 생각하십시오. 이것은 내 방식입니다.
import numpy as np
np.random.choice(range(20), 10, replace=False)
'range (n)'(또는'arange (n)')를'choice'의 첫 번째 인수로 사용하는 대신'n'을 전달하는 것과 같습니다. '선택 (20, 10, replace = False)'. –
"반복적이지 않은"이란 무엇을 의미합니까? 난수 시퀀스가 반복되지 않는다는 것? 난수 생성기의 상태가 컴퓨터의 유한 메모리에 맞아야하기 때문에 이것은 불가능합니다. 아니면 하나의 숫자가 두 번 나타나지 않는다는 뜻입니까? –
비 반복적이란 중복이없는 목록이 있음을 의미합니다. – Polynomial
아마 무작위 순열이 필요합니까? http://docs.scipy.org/doc/numpy/reference/generated/numpy.random.permutation.html – cyborg