Kindleなら本も漫画も読み放題【30日間無料体験】
アマゾンのクーポン 古本屋「ココネ書房」

サイコロの出た目の数をカウントするプログラムをJavaで作る方法

Java

理論上では六面のサイコロのそれぞれの目が出る確率は1/6です。

「理論上」というのは、実際のサイコロは面に開いた穴の大きさだったり、転がした場所と面の摩擦だったり、空気抵抗だったりと色々な物理的制約があるため現実には誤差が生じるという意味です。

created by Rinker
¥858 (2019/10/23 03:27:01時点 Amazon調べ-詳細)

しかし、誰しもが一心不乱にサイコロを振り続け、本当に確率が1/6になるのか試した経験があると思います。

僕は10回ぐらいやってすぐに諦めましたが。

created by Rinker
¥2,420 (2019/10/23 03:27:02時点 Amazon調べ-詳細)
created by Rinker
¥2,860 (2019/10/23 03:27:02時点 Amazon調べ-詳細)
スポンサーリンク

振ったサイコロの出た目をカウントする

Javaでサイコロの出た目をカウントするプログラムを作ってみました。

このソースコードを使えばサイコロを振れば振るほど確率が理論値に近づいていくのが良く分かります。

import java.util.Random;//(1)Randomクラスをインポート
public class Try {

	public static void main(String[] args){

	Random r = new Random(); //(2) Randomクラスのオブジェクトを変数rに格納

	int freq[] = new int[7]; //(3)要素が7つの配列を生成 

		for(int roll=1; roll<100; roll++){ //(4)for文を使ってサイコロを100回振る
		++freq[1+r.nextInt(6)]; //(5)出た目をカウントする
}
	System.out.println("Face \tFrequency");//

	for(int face=1; face<freq.length;face++){
	System.out.println(face + "\t\t" + freq[face]); //(6)画面に出力
	}

		}}

(1)Randomクラスをインポートする

1から6までの乱数を自動で生成をするためにRandomクラスをインポートします。

import java.util.Random;

(2)Randomクラスのオブジェクトを生成する

Random r = new Random();

Randomクラスのオブジェクトを生成し、それを変数rに格納します。

(3)サイコロの各目が要素となる配列を生成

int freq[] = new int[7]; 

ここではnew int[7]と要素が7つありますが、配列のindexは0から始まるのでnew int[6]だと0から5までの数字しか使えないからです。

(4)for文でサイコロを100回振る

for(int roll=1; roll<100; roll++){

int型のrollを定義し、ボディの内部の作業を100回繰り返します。

(※追記 100ではなく99になってました。)

(5)出た目をカウントする

++freq[1+r.nextInt(6)];

ここが一番重要です

まずは[]の中でr.nextInt(6)メソッドを使い0~5までの乱数を発生させます。

しかし、サイコロの目には0はないので1を足します。

こうすることで[0,1,2,3,4,5]が[1,2,3,4,5,6]の配列になります。

そして一番前の++でそれぞれの出た目をカウントしていきます。

例えば一番最初のforループ(roll=1)でfreq[3]が出たら、freq[3]=1(回)、次のループ(roll=2)でもfreq[3]が出たらfreq[3]=2(回)、次のループでfreq[6]が出たらfreq[6]=(1回)、と出た目の数をカウントしていきます。

(6)結果を出力する

for(int face=1; face<freq.length;face++){
	System.out.println(face + "\t\t" + freq[face]);

100回ループが終わると各目の出た数を出力します。

ここでもfor文を使います。faceという意味でfrequency頻度という意味です。

スポンサーリンク

結果

結果はこうなりました。

Face 	Frequency
1		15
2		12
3		20
4		20
5		15
6		17

なんとなく理論値に近づきます。

これは100回ですが、数を増やしていけばさらに近づいていきます。

一億回振るとこうなります。

Face 	Frequency
1		16660456
2		16667744
3		16668020
4		16668572
5		16671583
6		16663624

数が大きすぎで理論値から離れている気もしますが、確率的には1/6に近づいています。

スポンサーリンク

参考

この動画を参考にしました。

10年前くらいの動画ですが、Javaを学ぶにはとても良いです。

スポンサーリンク

プログラミングをオンラインで学ぶ

プログラミングはオンラインで効率よく学べます。

オススメは業界最大大手のTECHACADEMYですね。

今ならブートキャンプの無料体験もやっています。文系でも心配はありません。未経験でIT業界は今時普通のことです。

CodeCampもオンラインプログラミング学習では有名ですね。

完全未経験からWebサービスを開発するまでをマンツーマンでとことんレッスンしてくれます。家庭教師という印象が強く、わからないことがあってもすぐに質問することが出来ます。

スポンサーリンク

転職×未経験×エンジニア

完全未経験からエンジニアを目指す場合はDMMのウェブキャンプがおすすめです。

私の知り合いでも完全未経験からIT企業に転職し、今はWEBデザイナーとして働いている女性がいます。

未経験でもIT業界はいけます。本人の努力次第です。

コメント

本と漫画が読み放題のkindleunlimitedが初回30日間無料

本も漫画も読み放題のkindleunlimited。

タブレットでもスマホでも読めます。

タイのガイドブックも無料で読めるものがたくさん。

今なら初回30日間無料キャンペーンやってます。

タイトルとURLをコピーしました