๊ณ ๊ธ ํ์ด์ฌ ๊ฐ๋ฐ ๊ณผ์
์ฑํฐ 8
>
๋ ๋ฒจ 6
๋ชฉํ
๋๋ค ๋ชจ๋์ ์ฌ์ฉํ์ฌ ๋์ง ๊ฑด์ค ์ค ๋ฐ์ํ ์ ์๋ ์ค๋ฅ ๋ฐ ์ข์ ์ ๋๋นํ๊ธฐ ์ํด ์๋ฎฌ๋ ์ด์ ๊ณผ ํ ์คํธ๋ฅผ ์คํํ์ธ์.
๋ถ์ ๊ฑด๋ฌผ์ ์ง๋๋ฉด, ๊ฑด์ค๊ณผ ๊ด๋ จ๋ ๋ฐฐ์ก, ์ฃผํ ๋ฐ ๋ฌผ๋ฅ์ ๊ดํ ์๋ฅ ์
๋ฌด๋ฅผ ์ฒ๋ฆฌํ๋ ํ์ ์ฌ๋ฌด์ค์ด ์์ต๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ์ฌ ์ฌ๋ฌ ์๋๋ฆฌ์ค๋ฅผ ์คํํจ์ผ๋ก์จ ์ง์ฐ ๋ฐ ์ฅ๋น ๊ณ ์ฅ ๊ฐ๋ฅ์ฑ์ ๊ณ์ฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ฅผ ๋๊ธฐ ์ํด 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 ๊ฐ์ ๊ธฐ๋กํด ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ๊ณ ๋ ๋ฒจ์ ์๋ฃํ์ธ์.