>

파이썬에서 1000 개의 난수 (0..2000)를 생성하면 다음과 같이 쉽게 할 수 있습니다 :

iters = 1000
randIdx = []
numbers = range(0, 2000)
for i in range(iters):
        randIdx.append(random.sample(numbers, 8))

문제는 코드가 매우 느리다는 것입니다. 함수가 1000 세트를 내도록 지시하는 for 루프를 피하는 방법이 있습니까? 아니면 어떤 해결 방법이 있습니까? 나는 단지 8000 개의 난수를 생성하는 것을 생각했지만 8 개의 숫자 세트에서 중복이 허용되지 않으면 그렇게 할 수 없다는 문제가 발생합니다!

예 :

randIdx=[]
 indexRange = range(0, 3)  
 for i in range(5):
     randIdx.append(random.sample(indexRange, 2))
[[0, 1], [2, 1], [2, 0], [1, 0], [2, 1]]

  • 답변 # 1

    numpy 를 사용할 수 있습니다  이를위한 라이브러리 :

    import numpy as np
    arr = np.random.randint(0, 2000, (1000, 8))
    # array([[1026,   46, 1620, ...,  534, 1098, 1406],
    #        [1081, 1235,  484, ..., 1124,  841,    4],
    #        [1189, 1505, 1943, ...,   55, 1547, 1936],
    #        ..., 
    #        [1242,  877, 1129, ...,  230, 1226, 1399],
    #        [1134,  939,  969, ..., 1600,  288, 1479],
    #        [ 492,    5,  545, ..., 1093, 1805, 1404]])
    
    
    그런 다음 한 번의 선택으로 배열을 슬라이스하면됩니다 (예 : 와이즈 비즈  첫 번째 행을 배열로 제공합니다.

    arr[0]

관련 자료

  • 이전 cuda - 호환되지 않는 nvml 라이브러리가 포함 된 경우 nvidia-smi가 실패합니다
  • 다음 c# - NUnit 2에서 NUnit 3으로 업그레이드 할 때 '비동기 테스트 메소드에 비공개 리턴 유형이 있어야 함'오류