Skip to content

Latest commit

ย 

History

History
97 lines (83 loc) ยท 5.07 KB

File metadata and controls

97 lines (83 loc) ยท 5.07 KB

Simulation and Design

  1. pseudo-random numbers
  2. MonteCarlo simulations
  3. top-down and spiral design techniques
  4. unit testing-implementation and debugging of complex programs

1. Pseudo-random Numbers & MonteCarlo simulations

  1. Our simulation program will have to deal with uncertain events.
  2. Many simulations share this property of requiring events to occur with a certain likelihood.
  3. These sorts of simulations are sometimes called Monte Carlo algorithms because the results depend on "chance" probabilities.

  1. ํŒŒ์ด์ฌ์˜ ๊ฒฝ์šฐ random ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•ด์„œ ๋žœ๋คํ•œ ์ˆ˜๋ฅผ ๋ฝ‘์•„๋‚ผ ์ˆ˜ ์žˆ์Œ.
  2. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์—”์ง„์€ Mersenne Twister ์ƒ์„ฑ๊ธฐ๊ฐ€ ์‚ฌ์šฉ๋จ.
  3. ๊ธฐ๋ณธ ์œ ์‚ฌ๋‚œ์ˆ˜ ๋ฐœ์ƒ๊ณผ ๋ฉ”๋ฅด์„ผ ํŠธ์œ„์Šคํ„ฐ ๊ตฌํ˜„ ์ฐธ๊ณ ์ž๋ฃŒ ๊ธฐ๋ณธ ์œ ์‚ฌ ๋‚œ์ˆ˜ ๋ฐœ์ƒ๊ณผ ๋ฉ”๋ฅด์„ผ ํŠธ์œ„์Šคํ„ฐ ๊ตฌํ˜„

random ๋ชจ๋“ˆ์˜ ๋Œ€๋ฝ์ ์ธ ๊ตฌ์กฐ

import random
random.random()
  1. random ๋ชจ๋“ˆ ๋‚ด๋ถ€์—๋Š” Random์ด๋ผ๋Š” ํด๋ž˜์Šค๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์Œ.
  2. ์‚ฌ์šฉ์ž๊ฐ€ random ๋ชจ๋“ˆ์„ import ํ•˜๋Š” ์ˆœ๊ฐ„ Randomํด๋ž˜์Šค๋Š” ์ž๋™์ ์œผ๋กœ ์ธ์Šคํ„ด์Šคํ™” ๋œ๋‹ค. (Random ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๊ฐ€ ํ•˜๋‚˜ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ)
  3. _inst ๊ฐ€ Random ํด๋ž˜์Šค์˜ ๊ฐ์ฒด์ด๋‹ค. Random๊ฐ์ฒด์—๋Š” random์ด๋ผ๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ์žˆ๋‹ค. random=_inst.random ๋ฉ”์†Œ๋“œ๋ฅผ bindingํ•ด์„œ random์ด๋ผ๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ
  4. ์ž์„ธํ•œ random์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ tistory ๋ธ”๋กœ๊ทธ ์ฐธ์กฐ ํŒŒ์ด์ฌ random ๋ชจ๋“ˆ๋กœ ๋‚œ์ˆ˜ ์ƒ์„ฑํ•˜๊ธฐ

๋ชฌํ…Œ์นด๋ฅผ๋กœ ์‹œ๋ฎฌ๋ ˆ์ด์…˜

  1. ๋ชฌํ…Œ์นด๋ฅผ๋กœ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์€ ๋žจ๋ค์˜ ์ˆซ์ž์™€ ํ™•๋ฅ ์„ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ธฐ๋ฒ•
  2. ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ๋Š” ์›์ฃผ์œจ์˜ ํฌ๊ธฐ๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด๋ณด๋Š”๊ฒƒ
  • ๋ฐ˜์ง€๋ฆ„์ด 1์ธ์›๊ณผ ๊ทธ์›์„ ๋‘˜๋Ÿฌ์‹ผ ์‚ฌ๊ฐํ˜•์ด ์žˆ๋‹ค.
  • ์ด ์‚ฌ๊ฐํ˜•์•ˆ์— ๋ฌด์ž‘์œ„๋กœ 10000000 ๋ฒˆ์˜ ์ ๋“ค์„ ์ง๋Š”๋‹ค.
  • ์ด์ ๋“ค์ด ์› ์•ˆ์— ๋–จ์–ด์งˆ ํ™•๋ฅ ์€ ์› ๋„“์ด/์‚ฌ๊ฐํ˜• ๋„“์ด, ์ฆ‰ Pi/4์ž„
  • ์ ๋“ค์ด ์›์•ˆ์— ๋–จ์–ด์ง€๋Š” ํšŸ์ˆ˜๋Š” 10000000*(์›์˜๋„“์ด(PI)/์‚ฌ๊ฐํ˜• ๋„“์ด)
  • PI= numberOfHits/1000000
import random 
NUMBER_OF_TRIALS = 10000000
numberOfHits=0

for i in range(NUMBER_OF_TRIALS): #์ ์ด ๋–จ์–ด์ง€๋Š” ์œ„์น˜ 
	x=random.random()*2-1
	y=random.random()*2-1
	
	ifx*x+y*y<=1: #์ ์ด ๋–จ์–ด์ง€๋Š” ์œ„์น˜๊ฐ€ ์› ์•ˆ์ธ ๊ฒฝ์šฐ numberOfHits์— +1
		numberOfHits+=1
		
pi=4*numberOfHits/MUMBER_OF_TRIALS

print("PL is",pi)

์ฐธ๊ณ ์ž๋ฃŒ ๋ชฌํ…Œ์นด๋ฅผ๋กœ ๋ฉ”์†Œ๋“œ ๋ฐ ์›์ฃผ์œจ ์ •๋ฐ€๋„ ,ํŒŒ์ด์ฌ๊ณผ ์ฃผ๊ฐ€ ๋ชฌํ…Œ์นด๋ฅผ๋กœ ์‹œ๋ฎฌ๋ ˆ์ด์…˜

3.top-down and spiral design techniques

ํ•˜ํ–ฅ์‹

  1. ํ•˜ํ•ญ์‹ ์„ค๊ณ„๊ณผ์ •

1. ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ถ€๋ถ„ ๋ฌธ์ œ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

  1. ๊ฐ ๋ถ€๋ถ„ ๋ฌธ์ œ์‚ฌ์ด์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•œ๋‹ค.
  2. ๊ฐ ๋ถ€๋ถ„ ๋ฌธ์ œ์— ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ค€์ˆ˜ํ•˜๋Š” ์„ธ๋ถ€์‚ฌํ•ญ์„ ์ฑ„์›Œ๋„ฃ๋Š”๋‹ค.
  3. ๋ชจ๋“  ๋ถ€๋ถ„ ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.
  4. ์ฐธ๊ณ ์ž๋ฃŒ Python์„ ์‚ฌ์šฉํ•˜์—ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฐ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋กœ ๋ฌธ์ œ ํ•ด๊ฒฐ,์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊นƒํ—ˆ๋ธŒ ๊ณต๋ถ€์ž๋ฃŒ

2.๋Œ€์ฒด๋กœ ์“ฐ์ผ ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„ ํ”„๋กœํ† ํƒ€์ดํ•‘๊ณผ ๋‚˜์„ ํ˜• ๊ฐœ๋ฐœ

  1. prototype ๋ช…์„ธ ์„ค๊ณ„ ๊ตฌํ˜„ ํ…Œ์ŠคํŠธ ๋ฅผ ๊ฑฐ์ณ ์ „์ฒด๋ฌธ์ œ๋ฅผ ํ•œ๋ฒˆ์— ํ•ด๊ฒฐํ•˜๋Š” ๋Œ€์‹ ์— ๋จผ์ € ํ”„๋กœํ† ํƒ€์ž…์— ๋Œ€ํ•œ ์„ค๊ณ„์™€ ๊ตฌํ˜„ ๊ทธ๋ฆฌ๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ๊ฑฐ์นœ๋’ค์— ํ”„๋กœํ† ํƒ€์ž…์ด ์›ํ•˜๋˜ ํ”„๋กœ๊ทธ๋žจ์— ์ด๋ฅผ๋•Œ๊นŒ์ง€ ์ ์ง„์ ์œผ๋กœ ์ž‘์€ ๊ฐœ๋ฐœ์ฃผ๊ธฐ๋ฅผ ๋Œ๋ฉฐ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด ๋‚˜์•„๊ฐ€๋Š” ๋ฐฉ์‹
from random import random
def simOneGame():
   scoreA = 0
   scoreB = 0
   serving = "A"
   for i in range(30):
   	if serving == "A" :
   		if random() < .5:
   			scoreA = scoreA + 1
   		else:
   			serving = "B"
   	else:
   if random() < .5:
   	scoreB = scoreB + 1
   else:
   	serving = "A"
print(scoreA, scoreB)
if __ name __ == '__ main __' : simOneGame()
  1. ๋ฐ˜๋ณต๋ฌธ ๋ชธ์ฒด ๋ ๋ถ€๋ถ„์— print๋ช…๋ น๋ฌธ์„ ์‚ฌ์šฉํ•œ๊ฒƒ ์ค‘๊ฐ„ ๊ณผ์ •์˜ ์ ใ…์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋ฉด ํ”„๋กœํ† ํƒ€์ž… ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฒฝ๊ธฐ ์–‘์ƒ ํ™•์ธ ๊ฐ€๋Šฅ
  2. ๊ต์žฌ์˜ ์„ ์ˆ˜ ๋ฌธ์ œ์ธ ๊ฒฝ์šฐ์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์Šน๋ฅ ์„ ์ •ํ•ด์„œ ์ด์— ๋Œ€ํ•ด n์„ ํ™•์ธํ•˜์—ฌ ๊ตฌ์ƒํ•œ๊ฒƒ๊ณผ๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅด๊ฒŒ 50ํผ์„ผํŠธ์˜ ํ™•๋ฅ ์„ ์ด๋ฏธ ๊ฐ€์ •ํ•œ ํ›„์— ์ด๋ฅผ ํ”„๋กœํ† ํƒ€์ž…์œผ๋กœ ๋‘”๋‹ค.
  3. ์ธ์ž์ถ”๊ฐ€ ํ˜•์‹์„ ํ†ตํ•ด์„œ ์„ ์ˆ˜์˜ ๋ž ๋ฆฌ ์Šน๋ฅ ์ด ๋‹ค๋ฅด๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ , ์ดํ›„์— ํ”„๋กœ๊ทธ๋žจ์„ ํ™•์žฅํ•˜๋Š” ๊ฒƒ
  4. ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ๊ฐœ๋ฐœ์ด๋‚˜ ์ดˆ๋ณด ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ๋ณด์ž„. ๋ณด์™„์ œ์˜ ์„ฑ๊ฒฉ

4. unit testing-implementation and debugging of complex program