Python에서 마지막 n 개 값을 사용하지 않고 난수 생성

user1624184

0에서 100 사이의 난수를 생성하는 Python 함수가 있습니다.

def get_next_number():
    value = randint(0,100)

이 함수를 호출 할 때마다 난수를 반환해야하지만 그 숫자는 마지막으로 반환 된 n 개의 난수 중 하나가 될 수 없습니다 (이 예에서는 5라고하겠습니다).

여기 예시들이 있습니다 :

55, 1, 67, 12, 88, 91, 100, 54 (반환 된 마지막 5 개 숫자에 중복이 없으므로 괜찮습니다)

77, 42, 2, 3, 88, 2 ... (함수가 2의 난수를 얻었을 때, 2는 이미 3 개의 숫자가 이전에 반환되었으므로 다시 시도해야합니다)

89, 23, 29, 81, 99, 100, 6, 8, 23 ... (23 번이 5 번 이상 발생했기 때문에 괜찮습니다)

이를 수행하기 위해 임의 함수에 내장 된 것이 있습니까?

이안

그것을 생각 다른 방법 내내 .

난수를 생성 한 다음 이전에 이미 생성되었는지 확인 하는 대신 먼저 중복되지 않는 번호 집합을 생성하여 하나씩 선택하여 중복 번호를 생성 할 가능성을 제거 할 수 있습니다.

또한 마지막으로 생성 된 5 개 항목을 추적하여 선택한 항목에서 제외해야합니다.

다음과 같이하면됩니다.

s = set(range(0, 100))
last5 = []
def get_next_number():
    reduced_list = list(s - set(last5))
    i = randint(0, len(reduced_list) - 1)
    last5.append(reduced_list[i])
    if len(last5) > 5:
        last5.pop(0)
    return reduced_list[i]

테스트하려면 :

result = []
for i in range(0, 5000):
    result.append(get_next_number())
print(result)

단계별 설명 :

  1. 선택할 숫자 세트 (예 : 0 ~ 99)를 생성하고 마지막으로 선택한 5 개의 숫자를 저장할 빈 목록을 생성합니다.

    s = set(range(0, 100))
    last5 = []
    
  2. 이 방법에서 마지막으로 선택한 5 개의 숫자를 선택 가능성에서 제외합니다.

    reduced_list = list(s - set(last5))
    
  3. 에서 임의의 숫자를 선택하면 reduced_list에 남아있는 모든 숫자 reduced_list가 선택에 유효합니다. last5목록에 번호 추가

    i = randint(0, len(reduced_list) - 1) #get any valid index. -1 is needed because randint upperbound is inclusive
    last5.append(reduced_list[i]) #the number is as what it pointed by the index: reduced_list[i], append that number to the last 5 list
    
  4. last5목록에 이미 구성원이 있는지 확인하십시오 > 5.있는 경우 첫 번째 구성원 을 제거해야합니다 .

    if len(last5) > 5:
        last5.pop(0)
    
  5. 선택한 회원 반환 :

    return reduced_list[i]
    

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

날짜 매개 변수를 전달하지 않고 디렉토리에서 마지막으로 생성 된 3 개의 파일을 보는 방법

분류에서Dev

반복하지 않고 9 개의 난수 생성

분류에서Dev

부울 난수 생성기를 사용하여 0에서 n까지 난수 생성

분류에서Dev

Javascript : 난수 생성에서 루프 반복마다 각각의 새로운 시드 값을 사용하지 않는 이유는 무엇입니까?

분류에서Dev

C에서 반복하지 않고 난수 생성

분류에서Dev

범위 내에서 'n'개의 고유 한 난수 생성

분류에서Dev

n 개의 고유 한 정수 (Python)를 사용하여 고정 합계를 얻기 위해 대체하지 않고 임의의 정수 생성

분류에서Dev

SQL에서 난수 전에 사용되지 않은 생성

분류에서Dev

사전을 사용하지 않고 동적 Python 변수 생성 시도

분류에서Dev

nanosleep / usleep을 사용하지 않고 C 함수에서 지연을 생성하려고합니다.

분류에서Dev

매개 변수에 따라 관계형 테이블에서 마지막 값을 추출하려고합니다.

분류에서Dev

반복하지 않고 9에서 4 개의 난수 선택

분류에서Dev

Excel에서 임의 값이 행에서 반복되지 않는 두 값 사이에 난수 행을 생성하는 방법은 무엇입니까?

분류에서Dev

Javascript에서 서로 중복되지 않고 난수 배열을 생성합니까?

분류에서Dev

자바 고차 함수는 어떤 매개 변수를 사용하지 않는 방법을 작성하고지도를 반환하는 방법을지도의 값은 메소드 난 자바 인

분류에서Dev

3 개의 서로 다른 이미지에 난수 생성

분류에서Dev

사용되지 않는 변수를 생성하지 않고 파이썬에서 줄을 긋습니다.

분류에서Dev

괄호를 사용하지 않고 PowerShell에서 개체의 속성을 어떻게 얻을 수 있습니까?

분류에서Dev

수식을 사용하여 2 개 열에서 고유하지 않은 값 가져 오기

분류에서Dev

프로그램은 50 개의 난수 (1에서 10 사이)를 생성하고 5보다 작고 5보다 큰 값의 양을 알려줍니다 (C #).

분류에서Dev

C #을 사용하여 MongoDB 컬렉션에있는 모든 사용자의 마지막 N 개 문서 선택

분류에서Dev

범위에서 반복되지 않는 3 개의 난수를 생성하는 방법은 무엇입니까?

분류에서Dev

스트림 추출 연산자를 사용하여 마지막 행에만 3 개의 값이 포함되지 않은 오류가 있다고 가정하여 파일을 읽을 수 있습니다.

분류에서Dev

내 목록의 난수에 속하는 인스턴스를 어떻게 반환 할 수 있습니까? 백만 개의 if 문을 사용하지 않고?

분류에서Dev

mysql SUM ()을 사용하고 WHERE 절에서 난수를 생성합니다.

분류에서Dev

각 고유 한 변수 조합에 대해 n 개의 난수로 열 생성

분류에서Dev

n 개의 고유 필드의 마지막 값 가져 오기

분류에서Dev

마지막 값을 제거하지 않고 popd 사용

분류에서Dev

서버를 사용하지 않고 로컬에서 HTML을 생성 할 수 있습니까?

Related 관련 기사

  1. 1

    날짜 매개 변수를 전달하지 않고 디렉토리에서 마지막으로 생성 된 3 개의 파일을 보는 방법

  2. 2

    반복하지 않고 9 개의 난수 생성

  3. 3

    부울 난수 생성기를 사용하여 0에서 n까지 난수 생성

  4. 4

    Javascript : 난수 생성에서 루프 반복마다 각각의 새로운 시드 값을 사용하지 않는 이유는 무엇입니까?

  5. 5

    C에서 반복하지 않고 난수 생성

  6. 6

    범위 내에서 'n'개의 고유 한 난수 생성

  7. 7

    n 개의 고유 한 정수 (Python)를 사용하여 고정 합계를 얻기 위해 대체하지 않고 임의의 정수 생성

  8. 8

    SQL에서 난수 전에 사용되지 않은 생성

  9. 9

    사전을 사용하지 않고 동적 Python 변수 생성 시도

  10. 10

    nanosleep / usleep을 사용하지 않고 C 함수에서 지연을 생성하려고합니다.

  11. 11

    매개 변수에 따라 관계형 테이블에서 마지막 값을 추출하려고합니다.

  12. 12

    반복하지 않고 9에서 4 개의 난수 선택

  13. 13

    Excel에서 임의 값이 행에서 반복되지 않는 두 값 사이에 난수 행을 생성하는 방법은 무엇입니까?

  14. 14

    Javascript에서 서로 중복되지 않고 난수 배열을 생성합니까?

  15. 15

    자바 고차 함수는 어떤 매개 변수를 사용하지 않는 방법을 작성하고지도를 반환하는 방법을지도의 값은 메소드 난 자바 인

  16. 16

    3 개의 서로 다른 이미지에 난수 생성

  17. 17

    사용되지 않는 변수를 생성하지 않고 파이썬에서 줄을 긋습니다.

  18. 18

    괄호를 사용하지 않고 PowerShell에서 개체의 속성을 어떻게 얻을 수 있습니까?

  19. 19

    수식을 사용하여 2 개 열에서 고유하지 않은 값 가져 오기

  20. 20

    프로그램은 50 개의 난수 (1에서 10 사이)를 생성하고 5보다 작고 5보다 큰 값의 양을 알려줍니다 (C #).

  21. 21

    C #을 사용하여 MongoDB 컬렉션에있는 모든 사용자의 마지막 N 개 문서 선택

  22. 22

    범위에서 반복되지 않는 3 개의 난수를 생성하는 방법은 무엇입니까?

  23. 23

    스트림 추출 연산자를 사용하여 마지막 행에만 3 개의 값이 포함되지 않은 오류가 있다고 가정하여 파일을 읽을 수 있습니다.

  24. 24

    내 목록의 난수에 속하는 인스턴스를 어떻게 반환 할 수 있습니까? 백만 개의 if 문을 사용하지 않고?

  25. 25

    mysql SUM ()을 사용하고 WHERE 절에서 난수를 생성합니다.

  26. 26

    각 고유 한 변수 조합에 대해 n 개의 난수로 열 생성

  27. 27

    n 개의 고유 필드의 마지막 값 가져 오기

  28. 28

    마지막 값을 제거하지 않고 popd 사용

  29. 29

    서버를 사용하지 않고 로컬에서 HTML을 생성 할 수 있습니까?

뜨겁다태그

보관