• ベストアンサー

データ処理です

サイコロの目が、1~6まで本当に均等に出るのかを調べるため、サイコロの目のデータのヒストグラムを作り、10、100、500、1000回サイコロを振った時の場合を求めたいです。 エクセル上でサイコロの目を表現するにはランダム関数を利用するようし、数式をそのままにしておくと、目が次々変化するので変化しないようにする工夫をしなければなりません。 ヒストグラムの作り方はわかるのですが、ランダム関数の使い方もわからず、どのように解いていけばよいか見当がつかないのでお願いします。初心者ですので、どなたか分かりやすく御教授いただけないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • banakona
  • ベストアンサー率45% (222/489)
回答No.6

#1です。 ご質問から丸2日たっているのでリアクションがないかもしれないけれど、読んでもらえることを願って。 まずはマクロ編。 これを機会にマクロの世界に踏み込んでは? やりかたは・・・ 1.エクセルを起動する 2.「ツール→マクロ→セキュリティ→中」とする 3.「ツール→マクロ→Visual Basic Editor」とする 4.左上のエリアに「VBAProject<Book1>」と書いてあると思います。そこを右クリックして「挿入→標準モジュール」とする 5.白い画面が現れるので、そこに以下のプログラムをコピー&ペーストする Option Explicit Option Base 1 Sub saikoro() Dim a As Long, b As Integer, i As Long, dosuu(6) As Integer Randomize Cells.Clear a = InputBox("回数=?") For i = 1 To a Cells(i, "B") = i b = Int(Rnd() * 6 + 1) Cells(i, "C") = b dosuu(b) = dosuu(b) + 1 Next Cells(1, "e") = "目" Cells(1, "f") = "度数" For b = 1 To 6 Cells(b + 1, "e") = b Cells(b + 1, "f") = dosuu(b) Next End Sub 6.エクセルに戻る(下のタスクバーをクリック) 7.「ツール→マクロ→マクロ」とする 8.「マクロ名」のところに"saikoro"と表示されるので「実行」する 2で、ちょっとおっかない表示が出ますが、気にしないでください。 #1のプログラムは少し変だったので直しました。ついでに度数も表示するように改良しました。 マクロが動くエクセルと動かないエクセルでは、金魚とミジンコくらいの違いがあります。努力次第で金魚がニシキゴイやイルカに変身します。

ichigo2007
質問者

お礼

ありがとうございます。 このように細かく教えていただけると本当に助かります。 これから少しずつ教えていただいたようにやって行きたいと思います。 何とか解決の道が開けそうです。

ichigo2007
質問者

補足

無事、課題を終わらせることができました。 こんなに詳しく教えていただき、とても感謝しています。 今回はマクロを使ってやってみました。 初めてのことで、自分ひとりでは何もできませんでしたから、本当に助かりました。 ポイント付与が遅くなってしまって申し訳ございません。 このたびはありがとうございました。

その他の回答 (6)

  • banakona
  • ベストアンサー率45% (222/489)
回答No.7

#2です(つまり#1、#6です)。 非マクロ編。 (「ヒストグラムの作り方はわかる」とあったのでエクセル中級者かなと思いました。あれってアドインしたり階級(?)を入力したり結構めんどうだった気がするんですが。階級数はこの場合、6だから簡単かな。) 1.エクセルを起動する。 2.適当なセルにポインタを合わせてクリック(マクロ編にならってC1にします) 3.数式バー(左に「fx」と書いてある細長い上の窓)をクリックして、そこに=INT(RAND()*6+1)をコピー&ペーストしてリターン 4.セルC1に数字(1~6)が表示されるので、それをC2~C50にコピー(50個の場合。100個ならC2~C100にコピー)してリターン 5.C1~C50(50個の場合)をコピーし、どこかのセル(例えばE1)をクリック。 6.「貼り付け」の右にある▼をクリックして「値(V)」とする。 7.どこでもいいのですが、例えばセルG3~G8に1,2,3,4,5,6と数値を1個ずつ入れる。 8.セルH3にポインタを合わせてクリック 9.数式バーをクリックして、そこに=COUNTIF(E$1:E$50,G3)をコピー&ペーストしてリターン 10.セルH3をH4~H8にコピーしてリターン こうすると、H3に「1が出た回数」、H4に「2が出た回数」、・・・、H8に「6が出た回数」が表示されます。これらを合計すると50などになることを確認してください。 「3.」「9.」の操作は、コピー&ペーストせずにセルに直接タイプ入力してももちろんOKです。 また、「9.」の式は50個の場合です。100個ならE$50の代わりにE$100と変更してください。 うーん、マクロのほうが簡単だ・・・ (#6の補足:マクロの起動の仕方は#6で紹介した以外にも色々あります。がんばってね)

ichigo2007
質問者

お礼

こちらもご丁寧に回答下さってありがとうございます。マクロの方が簡単ですか(笑)マクロができたらこちらにも挑戦したいと思います。わからなかったらまた質問させていただくかもしれません。 励ましの言葉まで添えていただいて感謝しています。 ありがとうございました。

  • Ishiwara
  • ベストアンサー率24% (462/1914)
回答No.5

数学で単に「サイコロ」といえば、それぞれの目がちょうど1/6ずつ出るものとされるモデルです。「定義されている」モデルを検証することは、無意味です。 もし、エクセルでそのような実験をすれば、それは、エクセルに組み込まれた乱数発生プログラムの精度を検証するだけの意味しか持ちません。

ichigo2007
質問者

お礼

回答ありがとうございます。 下の方のお礼にも書きましたが、私が1~6まで本当に均等に出るのかを知りたくて調べるわけではなく、データ処理の課題として出された既成のものです。 私はこれに回答して提出しなければならないのですが、解き方がわからないので質問させていただいたのです。 No.3様やNO.4様もそのように教えていただきましたが、『このような検証は無意味です』と書いて提出するわけにいきませんから、その、無意味な検証のやり方を教えていただきたいのです。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

#3 に賛成. 「サイコロを振る」ことを「Excel でシミュレートする」のは可能だけど, これは実際に「サイコロを振る」わけじゃないので無意味ではないかなぁ?

ichigo2007
質問者

お礼

回答ありがとうございます。 データ処理の勉強をしています。そのうちの課題で、回答者様のおっしゃる、「エクセルでシュミレート」がしたいのですが、グラフ作成が精一杯でここまでどうすればいいのかわからないのです。

回答No.3

エクセルの勉強なら良いでしょうが、サイコロの目が本当に均等に出るかを調べるのにエクセル(計算機)を使うのは、全く意味が無い様に思うのですが?  基本的には、均等に出るでしょうが、結果少し偏ったとして、もう一度試験をやればまた違った偏りになり、結果均等になるわけですが、それによりどう考察されるのかが良くわかりません。  本物のサイコロを使ってやれば、物理的本当の偏りがあり、結果も偏るかもしれません。

ichigo2007
質問者

お礼

回答ありがとうございます。 データ処理の問題で、エクセルの勉強をしています。そのうちの課題のひとつなんです。

  • banakona
  • ベストアンサー率45% (222/489)
回答No.2

#1です。あのままでも動きますが、 >Dim a As Long を Dim a As Long,i As Long に変更してください。 もしマクロが嫌いなら・・・ =INT(RAND()*6+1) というのを500とか1000とか並べます。このままでは何か作業をするたびに値がコロコロ変わってしまいます。 そこで、これらをコピーします。貼り付けの際に「貼り付け」の右にある▼をクリックして「値(V)」にします。貼り付けの瞬間に、貼り付けの元は変わってしまいますが、貼り付けられたものは2度と変わりません。

ichigo2007
質問者

お礼

再びありがとうございます。 色々な方法があるのですね。 実はまだ、その段階まで行けてないのです・・・。1から手取り足取り習わなきゃ理解できない状態でして・・・自分なりに勉強してるのですが難しいです・・・。

  • banakona
  • ベストアンサー率45% (222/489)
回答No.1

マクロを使ってはどうでしょう。 Sub saikoro() Dim a As Long Randomize a = InputBox("回数=?") ' 初期化 For i = 1 To a Cells(i, "B") = i Cells(i, "C") = Int(Rnd() * 6 + 1) Next End Sub これなら数字がコロコロ変わりません。 実行すると回数を聞いてくるので500とか1000とか入力してください。例えば500と入力するとC列に1~6の数字がランダムに表示されます。B列はカウンタです。要らなければ削除してください。

ichigo2007
質問者

お礼

回答ありがとうございます。 マクロを使うのですね。 ランダム関数もマクロも使ったことがないので、示していただいた段階に行く前の段階でつまづいており、そこまで行けません。教えていただいてからマクロについても自分なりに色々調べているのですが・・・。

関連するQ&A