大きな区分
高校数学(←Top)>>高卒~大学数学
>>統計用フリーソフトR
現在地と前後の項目(サブメニュー)

統計用フリーソフトR の基本操作(1)
統計用フリーソフトR の基本操作(2)
Rによる棒グラフの作成
Rによる度数分布表,クロス集計表の作成
ヒストグラムを表示する関数 hist( )
Rによるヒストグラム,散布図の作成
Rによるグラフの作成(1)
Rによるグラフの作成(2)
Rによる分岐とループ
名義尺度データの比率の検定
フィッシャーの正確確率検定
一様分布の疑似乱数を作る関数 runif( )
標本抽出関数 sample( )など

スマホ用は別頁
=== 読者が配色を変更したい場合 ===
◎外側の色を変えるには,次の色をクリック
◎内側の色を変えるには,次の色をクリック
標準文字色を変えるには,次の色をクリック
《Rの関数の♪~軽い解説》
== 具体例で,とにかく動くもの ==
R version 4.0.3, 4.0.4Patched
----- この教材の最終更新年月日:2021.5.08

• この教材では,体験・入門のレベルで,「30分から1時間ほどでそこそこ分かるもの」「具体例による解説」を目指す.
• 本来,Rのコンソールから,help(キーワード)rとすうと,英文の解説が表示されるが,筆者にはやや苦痛を伴う.
 さらに,その英文の解説でGoogle翻訳を選ぶと,日本語で表示される[B]が,読みづらい.その表示される英文[A]をコピーして,Web上のGoogle翻訳に貼り付けると,[B]よりは読みやすい日本語になる[C].
• 論理的で正確なレファレンスが必要な人は,[A][B][C]などを読んでください.
関数 runif( )
 一様分布(The Uniform Distribution)の疑似乱数を作る.
 Rでは,一般に分布名をxxxとするとき,pxxx, dxxx, qxxx, rxxxにより各々密度関数,累積分布関数,クォンタイル関数,乱数関数という形で統一的に関数名が付けられる.
※正確には「疑似乱数」と言うべきであるが,疑似であることは了解されているものとして,以下においては単に「乱数」と書く.
書き方
runif(n, min = 0, max = 1)
主な引数
(1)第1引数には,発生させたい乱数の個数を書く.
第1引数だけを指定し,第2引数以下を省略した場合,min=0, max=1として,0以上1以下の小数の乱数が返される.
【例1】
runif(1) ⇒ 0.1847987など(結果は毎回変わる)
runif(3) ⇒ 0.7224764 0.8229446 0.2895083など3個の乱数が返される
(2)第2引数には発生させたい乱数の下限を,第3引数には上限を書く.
【例2】
runif(2, 20, 30) ⇒ 22.47484 28.57085 (20以上30以下の小数の乱数が2個返される)
※例2の結果は,runif(2, 2, 3)*10と同じになる.
(ベクトルの定数倍は,各成分を定数倍したベクトルになる:c(x1, x2,・・・, xn)*k → c(kx1, kx2,・・・, kxn) )
  • 他の関数と同様に,名前付き引数として書く場合は,引数の意味は第1引数,第2引数, ... という順序では決まらない.ただし,名前付き引数として使う場合には,n=, min=, max= と書く.
    【例3】
    runif(max=30, min=20, n=2)
    ⇒ 【例2】と同じ結果が得られる
  • 他の疑似乱数発生関数と同様に,発生させた乱数を再現するには,あらかじめset.seed(number)・・・numberはユーザが決める・・・によって乱数の種を設定してから作業を行い,再現時も同様の手順を踏めばよい.
  • 0~1の乱数を10個作る場合,次の【例4】と【例5】では,同じ結果が得られるが,ループを用いたプログラムは一般に時間がかかるので,R的には【例5】の方が好まれる
    【例4】
    x<-numeric(3)
    for (n in 1:3) {
    	x[n]<-runif(1)
    }
    ⇒ 0.94472901 0.45214558 0.83268650
    
    【例5】
    x<-runif(3)
    ⇒ 0.56804492 0.04876597 0.14752424
    

【例題1】
 −1≦x≦1, −1≦y≦1の範囲に,点(x ,y)をランダムに1000個描く
x<-runif(1000, min=-1, max=1) #乱数1000個→x座標
y<-runif(1000, min=-1, max=1) #乱数1000個→y座標
plot(x,y,pch=16,col="blue",cex=0.3) #●青で小さい円
abline(h=c(-1,0,1)) #y=−1,0,1の横線
abline(v=c(-1,0,1)) #x=−1,0,1の縦線
(結果)
 右図のようになる
【例題2】
 疑似乱数として1から6までの目を600回発生させて(サイコロを600回投げる実験の代わり),出た目の数をヒストグラムに描く
x<-floor(runif(600, min=1, max=7))
hist(x, right=F, breaks=seq(1,7,by=1))
(結果)
 右図のようになる
 なお,この問題ではrunif()で発生した小数をfloor()で整数化したが,整数に直すにはas.integer()を用いて次のように書いても同じ結果が得られる.
x<-as.integer(runif(600, min=1, max=7))
 また,整数の乱数として1行目を次のように書いても,同じ結果が得られる.
x<-sample(1:6, 600, replace = TRUE)

<備考>
正の小数,分数をfloor()とas.integer()に渡すと,同じ整数部分が返される.
【例】 floor(2.01)→ 2,  as.integer(2.01) → 2
これに対して,負の小数,分数をfloor(), as.integer()に渡した結果は異なる.
【例】 floor(−2.01)→ −3,  as.integer(−2.01) → −2
※floor()は小数部分を0≦a<1とする.as.integer()は一番近い原点側の整数を返す.
...(PC版)メニューに戻る
■このサイト内のGoogle検索■

△このページの先頭に戻る△
【 アンケート送信 】
… このアンケートは教材改善の参考にさせていただきます

この頁について,良い所,悪い所,間違いの指摘,その他の感想があれば送信してください.
○文章の形をしている感想は全部読ませてもらっています.
○感想の内で,どの問題がどうであったかを正確な文章で伝えていただいた改善要望に対しては,可能な限り対応するようにしています.(※なお,攻撃的な文章になっている場合は,それを公開すると筆者だけでなく読者も読むことになりますので,採用しません.)


質問に対する回答の中学版はこの頁,高校版はこの頁にあります