고급 파이썬 개발 과정
챕터
>
레벨
수학 모듈
랜덤 모듈
목표
랜덤 모듈을 사용하여 농지 건설 중 발생할 수 있는 오류 및 좌절에 대비하기 위해 시뮬레이션과 테스트를 실행하세요.
부속 건물을 지나면, 건설과 관련된 배송, 주택 및 물류에 관한 서류 업무를 처리하는 행정 사무실이 있습니다. 사용 가능한 데이터를 이용하여 여러 시나리오를 실행함으로써 지연 및 장비 고장 가능성을 계산하는 것이 좋습니다. 이를 돕기 위해 import random으로 활성화된 random 모듈이 있습니다.
이 모듈은 다양한 정도의 무작위 출력을 생성하여 시뮬레이션을 실행하거나 계산/연습에 무작위 요소를 추가할 수 있도록 합니다. 우리 목적을 위해 다음 함수들을 사용할 것입니다:
random.seed(): 무작위 생성의 시드를 설정하며, 사용할 시드 숫자를 인자로 받습니다. 이는 주어진 시드로 실행되는 모든 무작위 함수가 동일한 결과를 반환함을 의미합니다. 이를 통해 무작위 생성을 제어하고 특정 결과를 재현할 수 있습니다.random.random():0과1사이의 무작위 부동 소수점을 반환합니다.random.randint(): 두 개의 인자를 받아, 두 숫자 사이(숫자 자체 포함)에서 숫자를 생성합니다. 결과는 정수로 반환됩니다.random.uniform(): 앞의 함수와 같으나 정수 대신 무작위 부동 소수점을 반환합니다.random.triangular(): 앞의 함수와 비슷하지만 mode라는 추가 인자(수정자)를 받습니다. mode는 무작위 범위의 두 숫자 사이에 있는 숫자여야 합니다. 생성된 무작위 숫자는 첫 두 인자 사이의 순수 무작위 숫자보다 통계적으로 mode에 더 가까운 숫자가 됩니다.random.choice(): 리스트를 인자로 받아 리스트에서 임의의 한 항목을 선택합니다.random.choices(): 다른 리스트에서 샘플링한 무작위 리스트를 생성합니다. 인자는 세 개로, 샘플링할 리스트, 각 항목에서 얼마만큼의 가중치를 둘지 나타내는 리스트, 그리고 몇 개의 샘플을 추출할지 지정하는 k 변수입니다. 샘플 수는 리스트 길이보다 클 수 있으며, 가중치에 따라 중복이 생성됩니다.random.shuffle(): 리스트를 인자로 받아 무작위로 섞습니다.random.sample(): 리스트에서 샘플로 추출할 항목과 샘플 수를 인자로 받아 추출합니다. 이는random.choices()의 간소화 버전입니다.
먼저, 밝은 X 표시 쪽으로 걸어가 탁자 앞에 서서 read() 함수를 사용해 메모를 읽고 무작위 변동이 적용된 시뮬레이션 실행에 필요한 데이터 포인트를 확인하세요. 우리는 장비 고장 시뮬레이션을 실행할 예정이며, 메모에는 무작위 생성을 위한 seed 값과 샘플링할 리스트가 기재되어 있습니다. random.seed() 함수를 사용하고 메모에 제공된 값을 입력하세요.
파란색 카펫 위의 어두운 X 표시 쪽으로 걸어가 탁자 앞에 서세요. 이전 메모에 명시된 농지 구역을 포함하는 sectors라는 리스트 상수가 있습니다. random.choice()의 결과를 저장할 selection 변수를 생성하고, sectors 리스트 상수를 사용하여 리스트에서 샘플을 추출하세요. 예: selection = random.choice(sectors)
또한, delay라는 변수를 생성하여 random.random()의 값을 저장함으로써 지연으로 인한 오차 범위를 시뮬레이션합니다.
그리고, defect라는 변수를 하나 더 생성하여 random.randint()의 값을 저장하며, 이를 통해 잠재적인 장비 고장 비율을 생성합니다. 인자로 0과 15를 추가하여 이 두 숫자 사이의 백분율을 생성하세요. 이후 selection, delay, defect 변수가 설정되면, 사전에 작성된 write() 함수를 이 세 변수의 순서대로 사용하여 건설 관련 잠재적 문제의 테스트에 활용할 데이터 포인트를 기록합니다.
금색 X 표시 쪽으로 걸어가 read() 함수를 사용하여 예측 작업을 계속 진행하세요. 메모의 데이터에는 재료, 수량 및 샘플링 데이터가 포함되어 있습니다. 우리는 메모의 데이터를 사용하여, 메모에 명시된 재료 유형을 담은 materials라는 리스트 상수를 포함한 더 큰 시뮬레이션을 실행할 것입니다.
빨간색 카펫 위의 어두운 X 표시 쪽으로 걸어가 탁자 앞에 서세요. weights라는 리스트를 생성하고, 메모에 명시된 순서대로 재료에 해당하는 네(4) 개의 숫자 값을 저장하세요. 예: weights = [400, 600 , -insert value-, -insert value-]
simulation이라는 변수를 생성하고 random.choices()의 결과를 저장하세요. 이때 materials 리스트 상수, 생성한 weights 리스트, 그리고 메모에 명시된 샘플링 단위를 보유한 k 인자를 추가합니다. 예: simulation = random.choices(materials, weights , k = insert sampling units ). 사전에 작성된 write() 함수를 사용하여 simulation 변수를 기록하세요.
녹색 카펫 위의 어두운 X 표시 쪽으로 걸어가 탁자 앞에 서세요. 생성한 simulation 리스트를 섞기 위해 random.shuffle() 함수를 사용하세요. 예: random.shuffle(simulation). 이 함수는 리스트를 직접 수정하므로 값을 저장할 필요가 없습니다. 그리고 random.sample()의 결과를 저장할 sample 리스트를 생성하고, 첫 번째 인자로 simulation 리스트, 두 번째 인자로 3을 지정하여 임의의 세(3) 항목을 샘플로 추출하세요. 예: sample = random.sample(simulation, k=3). 사전에 작성된 write() 함수를 사용하여 simulation과 sample를 기록하세요.
마지막으로, 보라색 카펫 위의 어두운 X 표시 쪽으로 걸어가 탁자 앞에 서서, defect라는 변수를 생성하고 random.uniform()의 결과를 저장하세요. 인자로 3과 10을 추가합니다. 이는 원래 시뮬레이션과 해당 시뮬레이션에서 추출한 샘플의 샘플링 값으로, 이를 통해 샘플에서 발생할 수 있는 잠재적 장비 결함 마진을 생성할 것입니다.
losses라는 변수를 생성하고 random.triangular()의 결과를 저장하세요. 인자로 200, 600, 400을 추가합니다. 이는 이전 메모에 명시된 재료의 숫자들로, 구체적으로 최저, 최고 및 중앙에 가장 가까운 값을 의미합니다. 이를 통해 시뮬레이션에 사용된 재료 수를 기반으로 삼각형 무작위 값을 얻을 수 있습니다. 사전에 작성된 write() 함수를 사용하여 defect와 losses 값을 기록해 결과를 도출하고 레벨을 완료하세요.