주사위 1개 던지기

#### 주사위 던지기 uniform distribution ####

# 랜덤한 숫자를 뽑는다 다 확률이 동일 1/6

# p = 1/n, n of die = 6

# 랜덤으로 1~6사이 값을 나오게 runif()을 써서 만들고,

# 각 주사위 숫자가 몇번 나왔는지 table()함수로 확인하기

#runif() #랜덤한 값을 uniform으로 하겠다(확률이 다 똑같다)
runif(100) # 0부터 1사이 값을 100개 동일한 확률로 뽑는다.

# 다 소수점으로 나오니 1~6사이가 나오도록
# 1. 0 < x < 1 * 6
runif(1000)*6 # 0 < x < 6

# 2. 0을 배제하기 위해서 올림(ceiling)을 씀 - 반올림하면 0이 되어버린 경우가 있음.
ceiling( runif(10000) * 6 ) # 1<= x <= 6

# 3. 주사위 변수에 담음
die <- ceiling( runif(10000) * 6 )

# 4. table() - 각 요소의 빈도를 알려주는 함수
table(die)
# my) 동일한 확률(runif)로 나오니까,, 전체 빈도는 비슷하다.
# 100번, 10번만 던져보기
die <- ceiling( runif(100) * 6 )
table(die)
die <- ceiling( runif(10) * 6 )
table(die)

# 5. 몇번 던질지에 대한 변수를 생성해서 대입해주기
roll <- 100  # 몇번 던지는지 샘플을 뽑는 횟수
n <- 6      # 주사위와 동일한 경우의수
die <- ceiling( runif( roll ) * n )
table(die)
#my) 사용자 정의함수로 만들어보기
die_func = function(roll = 100, n = 6){
   die <- ceiling( runif( roll ) * n ) 
   print(table(die))
}
die_func(1000, 6)

# 6. barplot()으로 그려보기
b = table(die)
barplot(b)
# uniform distribution은 동일한 확률을 가지고 던진다는 의미(뽑는다는 의미)인데,
# 100번 던진 그래프로 확인해보니 완전히 동일하지 않다. 왜냐하면 횟수가 적어서
# 횟수를 늘일수록 전체의 경우의수는 각각이 동일해진다.

#my) 사용자 정의함수로 만들어보기
die_func = function(roll = 100, n = 6){
   die <- ceiling( runif( roll ) * n ) 
   print(table(die))
   barplot(table(die))
}
die_func(10, 6)
die_func(100, 6)
die_func(10000, 6)
die_func(100000, 6)


  • 10번 던졌을 때,
    image
  • 100번,
    image
  • 10000번,
    image
  • 10만번
    image


주사위 2개 던지기

#### 2개 주사위의 합 ####
# 1. 주사위 1개 10000번
roll <- 10000
dice <- ceiling( runif(roll)*6 ) # 1 ~ 6


# 2. 주사위 1개 더 추가해서 더하기
dice <- ceiling( runif(roll)*6 ) + ceiling( runif(roll)*6 ) # 2 ~ 12
table(dice)
# 눈으로 봐도, 가운데 쪽이 수가 많다..

# 3. 그래프로 분포 확인
a <- table(dice)
barplot(a)

## 10000번을 던졌더니, 7에 가장 분포가 많다.
# 2가 나올 경우의수는 (1, 1)이고, 12는 (6, 6)밖에 없다
# 가운데 7은 (1,6) (2,5) (3,4) (4,3) (5,2) (6,1) 6가지 경우의 수로, 2or12가 나올 경우의 6배다..


# 4. 확인해보기
# 2가 나오는 경우의수에서 (1,1) 각각 독립이고 확률이 같다.
# 7에서 (1,6)도 1/6*1/6이고, (2,5)도 1/6*1/6이다
# 2개 나올 경우의수에 단순하게 7배 된 것이 7이 나올 경우의수이다.

a["2"]
a[1] # 285
a["12"]
a[11] #300

a["7"]
a[6] # 1655 # 285 * 6 = 1710으로

# 5. 엄청나게 많이 던져보자
roll <- 1000000
dice <- ceiling( runif(roll)*6 ) + ceiling( runif(roll)*6 ) # 2 ~ 12
a <- table(dice)
a["7"] - (a["2"]*6) # 86차이 밖에 안난다.

image




주사위 3개 던지기


# 6. 주사위를 3개 던져보자.
roll <- 10000
dice <- ceiling( runif(roll)*6 ) + ceiling( runif(roll)*6 ) + ceiling( runif(roll)*6 ) # 3 ~ 18
table(dice)
a <- table(dice)
barplot(a)
# 중앙값인 10.5 근처의 10과 11에서 가장 경우의수가 가장 많고 비슷하다.
image

+ Recent posts