Python의 랜덤 시드 함수

Abdul Jabbar 2022년1월22일
Python의 랜덤 시드 함수

갬블링이나 컴퓨터 게임에서 예상치 못한 결과의 난수를 원하면 Python의 내장 메서드에서 난수를 생성해야 합니다. 해커나 공격자가 추측할 수 없는 난수를 생성하는 데 도움이 되므로 암호화에도 유용합니다.

seed 절차는 난수 생성기를 다시 시작하는 데 사용됩니다. 난수 생성기는 난수를 생성할 수 있도록 시작하는 숫자(시드 값)가 필요합니다. 이것은 임의의 숫자가 될 수 있지만 일반적으로 컴퓨터 시스템의 시계에서 초 단위로 나타납니다. 기본적으로 난수 생성기는 컴퓨터의 실제 시간을 사용합니다. 이 방법을 사용하여 난수 생성기의 시작 번호를 사용자 지정합니다.

‘의사 난수’ 숫자는 값에 대해 일부 기능을 수행하여 작업을 생성합니다. 일반적으로 이 값은 생성기에 의해 생성된 이전 숫자입니다. 어쨌든 처음 생성기를 사용하면 이전 값이 없습니다.

참고: 동일한 시드 값을 두 번 사용하면 동일한 난수를 두 번 얻습니다. 아래 코드 예제에서 이 경우를 볼 수 있습니다.

이 메서드를 호출할 때 미리 정의된 규칙 집합에 따라 작동하므로 컴퓨터가 항상 진정한 난수를 계산하는 것은 아니므로 고유한 숫자가 될 것으로 기대하지 마십시오. 임의성을 추가하려면 프로세스에 대한 몇 가지 규칙을 만들어야 합니다. 예를 들어 x를 사용하여 표현식에서 프로세스에 대한 방정식을 생성하려면 600 +x를 더한 다음 30으로 빼십시오. x(시드 값)를 40으로 합시다.

  • 추가 600 + 40 = 640
  • 빼기 30 = 614

동일한 알고리즘에 따라 두 번째 난수는 다음과 같습니다.

  • 추가 600 + 30 = 630
  • 빼기 30 = 600

이 간단한 예는 특정 패턴을 따르지만 컴퓨터 번호 생성 뒤에 있는 알고리즘은 여기에서 할 수 있는 것보다 훨씬 더 잘 임의성을 모방하는 것이 훨씬 어렵습니다. 그러나 프로세스는 여전히 특정 패턴을 따르며 다음 번에 40을 입력하거나 임의의 시드에 선택한 숫자를 입력할 때 반복됩니다.

Python의 랜덤 시드 함수

이 코드 블록에서는 0에서 100 사이의 난수를 생성하고 검증을 위해 3번 생성합니다. 1번과 2번은 같은 시드를 주고 3번은 시드가 없거나 시드 값을 변경합니다. 먼저 코드에서 임의의 기능을 가져오고 시드를 3으로 제공하여 값 31을 임의의 숫자로 제공한 다음 동일한 시드를 제공하여 동일한 숫자를 다시 제공할 것입니다. 그러나 우리가 새로운 시드를 제공하거나 시드를 제공하지 않을 때, 그 가치는 항상 다를 것입니다.

import random

random.seed(4)
print(random.randint(1, 100))
random.seed(4)
print(random.randint(1, 100))
print(random.randint(1, 100))

출력:

31
31
39

random.randint 함수를 사용하면 임의의 숫자가 생성되고 다른 작업은 수행되지 않습니다. 무작위로 생성된 동일한 숫자의 사용법을 그대로 유지하려면 시드 함수를 사용해야 합니다.

작가: Abdul Jabbar
Abdul Jabbar avatar Abdul Jabbar avatar

Abdul is a software engineer with an architect background and a passion for full-stack web development with eight years of professional experience in analysis, design, development, implementation, performance tuning, and implementation of business applications.

LinkedIn