HOWTO · Python

Python의 목록에서 항목을 무작위로 선택하는 방법

이 기사는 Python의 목록에서 항목을 무작위로 선택하는 방법을 보여줍니다.

이 페이지의 내용

이 자습서에서는 Python의 목록에서 임의의 항목을 선택하는 방법을 보여줍니다. 이를 달성하는 여러 가지 간단한 방법이 있으며, 모두 Python 모듈 가져 오기를 포함합니다.

이 튜토리얼에서는random,secrets,NumPy 모듈이 필요한 솔루션을 다룹니다.

제시 될 모든 솔루션은 의사 난수 생성기 (PRNG)를 사용합니다.

모듈random을 사용하여 Python의 목록에서 무작위 항목 선택

무작위 화에 사용되는 가장 일반적인 모듈은 random 모듈입니다. 이 모듈은 무작위 화와 관련된 작업을 지원하기 위해 의사 무작위 유틸리티 함수를 구현합니다.

투표 용지처럼 목록에서 임의의 이름을 선택하고 싶다고 가정 해 보겠습니다.

["John", "Juan", "Jane", "Jack", "Jill", "Jean"]

이 목록에서 임의의 이름을 선택하려면 주어진 사용 가능한 데이터에서 항목을 선택하는random.choice()를 사용합니다.

import random

names = ["John", "Juan", "Jane", "Jack", "Jill", "Jean"]


def selectRandom(names):
    return random.choice(names)


print("The name selected is: ", selectRandom(names))

물론 출력은 가변적이고 무작위입니다. 따라서 변수names에 저장된 6 개의 이름 중 하나 일 수 있습니다.

모듈secrets를 사용하여 Python의 목록에서 임의의 항목 선택

secrets 모듈은 본질적으로random과 동일한 목적으로 사용됩니다. 그러나 secrets는 PRNG를 구현하는 암호화 보안 방법을 제공합니다.

암호, 인증, 암호화 및 암호 해독, 토큰 저장과 같은 실제 응용 프로그램에서. secretsrandom를 사용하는 것보다 훨씬 안전합니다. 시뮬레이션이나 민감한 데이터를 처리하지 않는 작업에만 유용하기 때문입니다.

이 문제에서는 민감한 데이터를 처리하지 않고 시뮬레이션을 위해이 작업을 수행하므로 두 모듈 모두 동일한 값을 제공합니다.

이 예에서는 동일한 names목록을 사용합니다. secrets에는random.choice()와 동일한 변수 출력을 생성하는choice()함수의 버전도 있습니다.

import secrets

names = ["John", "Juan", "Jane", "Jack", "Jill", "Jean"]


def selectRandom(names):
    return secrets.choice(names)


print("The name selected is: ", selectRandom(names))

모듈NumPy를 사용하여 Python의 목록에서 임의 항목 선택

NumPy 모듈에는 랜덤 화를위한 유틸리티 함수도 있으며choice()함수에 대한 인수로 몇 가지 확장 도구가 있습니다.

다시 말하지만, 함수numpy.random.choice()를 보여주기 위해 동일한names 목록을 사용할 것입니다.

import numpy

names = ["John", "Juan", "Jane", "Jack", "Jill", "Jean"]


def selectRandom(names):
    return numpy.random.choice(names)


print("The name selected is: ", selectRandom(names))

이 함수는 다른 두 모듈이 생성 한 것과 동일한 변수 출력을 반환합니다.

NumPychoice()에 대한 다른 인수도 제공하여 목록 형식으로 출력합니다.

두 번째 인수는 반환 할 임의 항목 수를 결정하기 위해 정수 값을받습니다. names목록에서 임의의 항목 4 개를 반환한다고 가정 해 보겠습니다.

def selectRandom(names):
    return numpy.random.choice(names, 4)


print("The names selected are: ", selectRandom(names))

샘플 출력 :

The names selected are: ['John', 'Jill', 'Jill', 'Jill']

무작위 결과에서 동일한 항목이 두 번 이상 반복 될 가능성이 있습니다.

결과 항목이 고유 한 것을 선호하는 경우 세 번째 boolean인수를 전달하여 교체없이 무작위 샘플링을 사용할 수 있습니다.

def selectRandom(names):
    return numpy.random.choice(names, 4, False)

샘플 출력 :

The names selected are: ['Jill', 'John', 'Jack', 'Jean']

이 함수는 항상 중복 항목없이 고유 한 목록을 생성합니다.

세 번째 인수를 추가하는 경우 한 가지 주요 단점은 중복을 확인하고 아직 결과 내에 존재하지 않는 항목으로 대체하기 위해 추가 된 작업을 실행하기 때문에 함수의 런타임입니다.

요약하면, 파이썬 목록에서 임의의 항목을 선택하는 것은random,secrets 또는NumPy의 세 가지 모듈 중 하나를 사용하여 수행 할 수 있습니다. 각각의 장점과 단점이 있습니다.

암호 학적으로 안전한 PRNG 방법을 원한다면 secrets가 가장 적합한 모듈입니다. 시뮬레이션 또는 민감하지 않은 데이터 조작만을 목적으로하는 경우random 또는NumPy를 사용하십시오. 하나 이상의 임의 결과를 원하면NumPy를 사용하십시오.