• ベストアンサー

データ処理です

サイコロの目が、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

  • サイコロの目を出す計算について疑問

    よろしくお願いします。 VB6.0でサイコロの目1-6を出す計算式として、 Int(Rnd() * 6) + 1 というものをよく見かけますが、これだと均等に1-6が出現しないような気がします。 Rnd()は0-1の値を返して、その値は全くランダムに返されるのだから、 戻り値が0<=かつ<0.1の場合はサイコロの目は1となり 0.1<=かつ<0.2ならサイコロの目は1となり 戻り値が0.2<=かつ<0.3なら目は2 0.3<=かつ<0.4なら2 戻り値が0.4<=かつ<0.5なら目は3 それなら次の、戻り値が0.5<=かつ<0.6なら目は3かと思えば、そうでなく4になってしまいます。 以下、 戻り値0.6台なら目は4 戻り値0.7台なら目は5 戻り値0.8台なら目は5 戻り値0.9台なら目は6 となり、これではぜんぜん均等にばらけないではないか?と思ったのですが、 実際に100000回計算させてそれぞれの出現回数を調べるとほぼ均等にばらけて いるように見えます。 一体どうしてなのでしょうか?

  • Excel 時刻データの生成?

    宜しくお願いいたします。 決められた時間帯から、 ランダムに任意の数の時刻を抜き出すようなことは Excel関数やマクロで可能なのでしょうか。 元データ Sheet1 取得時刻Sheet2 どなたかご存知の方がいらっしゃいましたら ご教授ください。

  • エクセルで「乱数」を出す@関数は?

    「1-2-3」では、乱数を出す関数は「@INT(@RAND*400)+1」で1~400の間のアットランダムな乱数をさながらサイコロのように出すことが出来るのですが、エクセルではそういう関数があるのでしょうか? 是非教えて下さい。

  • エクセルでデーター分布のグラフ作成

    ある生データをもとにデーター分布のグラフ(ヒストグラム?)を作成したいと思っています。 エクセルで作成しますので、操作方法などを分かりやすくご教授願います。 また、このグラフに規格値(Max&Min)も入れたいと思っています。これもエクセルで出来るのでしょうか?

  • エクセルのデータが

    エクセルで仕事のデータをランダムに入力しているのですが、データ量が多くなり ました。そこで最新データ(日付が一番新しい)を別セルに表示したいのですが、方法がわかりません。 どんな関数を使うか等を教えてください。

  • エクセルのテストの勉強について

    明日、会社でエクセルのテストがあります。 問題としては関数計算等と言う事だけ言われています。 そこで本屋さんでCD-ROM付きのテストを買ってきました。 第1章:データの作成及び操作 第2章:データとコンテンツの書式設定 第3章:数式の作成及び編集 第4章;データの視覚的表現 第5章:データの共有とセキュリティの設定 と第5章まであります。 エクセルは全くの初心者で、第1章終わるまでにも結構時間が掛かりました。 第3章まで終わればどうにかなりますでしょうか? ご教授のほど宜しくお願いします。

  • エクセル 最小値について

    初心者ですいません。エクセルの関数について教えてください。データの中で0より大きいものの中での最小値を出したいです。どのように数式を書いたらいいですか?よろしくお願いします。

  • エクセルのデータの表すことについて

    表側の厚さを測定したデータがありますが、 このデータは300πの円形上の塗布された厚さを中心から等しい割合で 測定されたデータです 例えば 厚さ 2 1 0 2 0 1 2  地点 -4 -2 -1 0 1 2 4 このように各地点での厚さを測ったものであります。このデータは塗布された液の断面の姿だから、このデータを用いて表面のグラフを作りたいです。円形なので各地点の値は円周では同じくらい厚さ分布になると考えられますが、エクセルでどんな関数および計算式を使ったら上のデータを表面グラフで表せますか? 例えば 地点0では2の厚さが測れたなのでこの地点から円周方向では同じ厚さだと考えますので、 どんな数式を使って表現するのができますか?? ぜひよろしくお願いいたします。

  • エクセルのデータの表すことについて

    表側の厚さを測定したデータがありますが、 このデータは300πの円形上の塗布された厚さを中心から等しい割合で 測定されたデータです 例えば 厚さ 10 2 3  1 0 2 0 1 3 2 10  地点 -5 -4 -3 -2 -1 0 1 2 3 4 5  このように各地点での厚さを測ったものであります。このデータは塗布された液の断面の姿だから、このデータを用いて表面のグラフを作りたいです。円形なので各地点の値は円周では同じくらい厚さ分布になると考えられますが、エクセルでどんな関数および計算式を使ったら上のデータを表面グラフで表せますか? 例えば 地点0では2の厚さが測れたなのでこの地点から円周方向では同じ厚さだと考えますので、どんな数式を使って表現するのができますか? ぜひよろしくお願いいたします。

  • データの抽出

    excelに A1 13 A2 27 A3 42 A4 50 A5 11 と入力されており、この中から条件はなくランダムに3つだけデータを抽出したいのですがしたいのですがこういうときは何という関数を使用すればいいのか教えていただきたいのですがお願いします。