我們都知道每個球出現的機率是一樣的,讓我們用電腦模擬1萬次與1百萬次看會是什麼情形:
大樂透每次開6個普通號,加上1個特別號,共7顆球,我們模擬開獎1萬次
set.seed(654)
big_lottery <- 1:49
smp <- replicate(10000, sample(big_lottery, 7, replace = FALSE))
我們可以看前10筆的資料,每行為1筆資料
smp[, 1:10]
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 11 10 41 49 10 32 27 20 12 45
## [2,] 36 26 38 10 8 36 44 10 38 12
## [3,] 17 37 37 36 23 6 33 43 40 19
## [4,] 4 47 40 8 21 11 12 13 11 31
## [5,] 43 16 15 37 47 4 35 23 14 48
## [6,] 10 38 48 48 16 18 30 35 6 46
## [7,] 20 3 20 3 22 28 15 8 46 32
觀察資料結構,7列10000行的矩陣
dim(smp)
## [1] 7 10000
class(smp)
## [1] "matrix"
處理資料,紀錄1~49號球各出現幾次
num_list <- rep(0, 49)
names(num_list) <- 1:49
print(num_list)
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
## 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
## 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
for (i in 1:nrow(smp)) {
for (j in 1:ncol(smp)) {
num = smp[i, j]
num_list[num] = num_list[num] + 1
}
}
print(num_list)
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
## 1420 1435 1446 1460 1382 1440 1458 1408 1394 1451 1376 1361 1464 1395 1399
## 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
## 1407 1446 1396 1384 1399 1484 1444 1453 1447 1418 1390 1443 1508 1414 1457
## 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
## 1410 1433 1426 1411 1385 1468 1438 1451 1457 1414 1428 1388 1458 1518 1443
## 46 47 48 49
## 1430 1421 1443 1399
整體的情況
summary(num_list)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1360 1400 1430 1430 1450 1520
直方圖:
barplot(num_list, main = "Simulate Lotto 100,000 times", xlab = "Ball Number",
ylab = "Frequency", ylim = c(0, 2000), col = rainbow(49))
smp2 <- replicate(1e+06, sample(big_lottery, 7, replace = FALSE))
num_list2 <- rep(0, 49)
names(num_list2) <- 1:49
print(num_list2)
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
## 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
## 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
for (i in 1:nrow(smp2)) {
for (j in 1:ncol(smp2)) {
num = smp2[i, j]
num_list2[num] = num_list2[num] + 1
}
}
整體的情況
summary(num_list2)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 142000 143000 143000 143000 143000 144000
每個球出現的次數非常的均勻
barplot(num_list2, main = "Simulate Lotto 1,000,000 times", xlab = "Ball Number",
ylab = "Frequency", ylim = c(1e+05, 160000), col = rainbow(49), xpd = FALSE)