R
確率

R言語でランダムに結果を取得する


概要

R言語でランダムな結果を取得するための関数sampleの使い方


解説

以下のR言語のコードでランダムにTRUE、FALSEを1つだけ取得できます。

# 以下の結果は実行するごとに変わります

> x <- c(TRUE, FALSE) # 母集団
> sample(x, size = 1)
[1] TRUE

続けてsample関数を呼ぶとsample関数で出力される結果がランダムに変化しているのがわかります。

# 以下の結果は実行するごとに変わります

> sample(x, size = 1)
[1] TRUE
> sample(x, size = 1)
[1] FALSE
> sample(x, size = 1)
[1] FALSE
> sample(x, size = 1)
[1] FALSE

第1引数として渡す母集団の要素数を3つ以上にすることもできます。

# 以下の結果は実行するごとに変わります

> x <- c("大吉", "中吉", "小吉", "凶", "大凶")
> sample(x, size = 1)
[1] "小吉"
> sample(x, size = 1)
[1] "大吉"
> sample(x, size = 1)
[1] "凶"

sizeを2以上にすることで連続して結果を取得できます。このとき、sample関数の引数としてreplaceをFALSE(デフォルト値)にしている場合は、一度取得した結果は再度取得されません。

# 以下の結果は実行するごとに変わります

> x <- c("大吉", "中吉", "小吉", "凶", "大凶")
> sample(x, size = 2)
[1] "大吉" "大凶" # 2回目の出力では"大吉"は選ばれない
> sample(x, size = 3)
[1] "中吉" "大吉" "大凶"
> sample(x, size = 5)
[1] "凶" "大凶" "中吉" "大吉" "小吉" # 毎回異なる結果が出力される

# replace = FALSEで母集団の要素数を超えるsizeを指定するとエラー
> sample(x, size = 6)
sample.int(length(x), size, replace, prob) でエラー:
'replace = FALSE' なので、母集団以上の大きさの標本は取ることができません

# replaceをTRUEにすると毎回母集団の全ての要素からいずれかの結果を取得する
> sample(x, size = 10, replace = TRUE)
[1] "中吉" "中吉" "小吉" "小吉" "小吉" "小吉" "凶" "凶" "小吉" "中吉"

また、sample関数の引数としてprobを指定すると各値が出力される確率を指定できます。

# 以下の結果は実行するごとに変わります

> x <- c("あたり", "はずれ")
# 20%の確率で"あたり"、80%の確率で"はずれ"を出力
> sample(x, size = 5, replace = TRUE, prob = c(0.2, 0.8))
[1] "はずれ" "はずれ" "はずれ" "はずれ" "はずれ"
> sample(x, size = 5, replace = TRUE, prob = c(0.2, 0.8))
[1] "はずれ" "はずれ" "はずれ" "あたり" "あたり"
> sample(x, size = 5, replace = TRUE, prob = c(0.2, 0.8))
[1] "あたり" "はずれ" "はずれ" "はずれ" "はずれ"

# 母集団と指定した確率の個数が一致しない場合はエラー
> sample(x, size = 5, replace = TRUE, prob = c(0.2))
sample.int(length(x), size, replace, prob) でエラー:
確率値の個数が正しくありません