Edited at

自然数1〜100のカードから1枚抜いたときに3の倍数であって5の倍数でない確率をRで求めてみる

More than 1 year has passed since last update.

RubyとPythonで求めてみたのでRでもやってみる。


解き方

標本空間S={1, 2, 3, ..., 98, 99, 100}として、3の倍数であることを事象A、5の倍数であることを事象Bとすると、求める確率は:

\frac{n(A \cup B) - n(B)}{n(S)}


Rで書く

和集合はunion(x,y)で計算可能。積集合はintersect。

seq(a, b, l)でa〜bの公差lの等差数列が作成できる。

> a <- c(seq(3,100,3))

> a
[1] 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63 66 69 72 75
[26] 78 81 84 87 90 93 96 99
> b <- c(seq(5,100,5))
> b
[1] 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95
[20] 100
> e1 <- union(a,b)
> e1
[1] 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57
[20] 60 63 66 69 72 75 78 81 84 87 90 93 96 99 5 10 20 25 35
[39] 40 50 55 65 70 80 85 95 100
> (length(e1)-length(b))/100
[1] 0.27


ベン図

ついでにRでベン図も描いてみる。

VennDiagramというパッケージをインストール。

> install.packages("VennDiagram", repos="http://cran.ism.ac.jp/")

まずはシンプルにやってみる。trial.tiffというファイルに画像を保存。

> library(VennDiagram)

> venn.diagram(list(A=seq(3,100,3), B=seq(5,100,5)), filename="trial.tiff")

できた図はこんな感じ。数字は個数。

trial_wo_color.png

色をつけてみる。fillが塗りつぶし(5は水色、6はピンク)、ltyが縁取り線(0で線なし)、alphaは透過率です。

venn.diagram(list(A=seq(3,100,3), B=seq(5,100,5)), fill=c(5,6), lty=0, aplha=0.4, filename="trial2.tiff")

trial_w_color.png


参考