2. Random | |
Mathクラスには擬似乱数を発生させるrandomメソッドがあったが、それをもう少し高機能にしたものが、このRandomクラスである。 | |
import java.util.Random |
|
コンストラクタ | |
Random() 新しい乱数ジェネレータを作成する |
|
Random(long seed) long型のシードを使って乱数ジェネレータを作成する |
|
メソッド | |
protected int | next(int bits)
次の擬似乱数を生成する |
void | nextBytes(byte[] bytes)
ランダムバイトを生成し、ユーザ指定のバイト配列に配置する |
double | nextDouble()
乱数ジェネレータのシーケンスを使って、0.0〜1.0の範囲で一様分布のdouble型の擬似乱数を返す |
float | nextFloat()
乱数ジェネレータのシーケンスを使って、0.0〜1.0の範囲で一様分布のfloat型の擬似乱数を返す |
double | nextGaussian()
乱数ジェネレータのシーケンスを使って、平均0.0、標準偏差1.0のガウス(「正規」)分布のdouble型の擬似乱数を返す |
int | nextInt()
乱数ジェネレータのシーケンスを使って、一様分布のint型の擬似乱数を返す |
int | nextInt(int n)
乱数ジェネレータのシーケンスを使って、0から指定された値の範囲(0は含むが、その指定された値は含まない) で一様分布の int 型の擬似乱数を返す |
long | nextLong()
乱数ジェネレータのシーケンスを使って、一様分布のlong型の次の擬似乱数を返す |
void | setSeed(long seed)
単一のlong型のシードを使って、乱数ジェネレータのシードを設定す |
sample) MathクラスのrandomメソッドとRandomクラスを用いた場合の例 | |
import java.io.*; import java.util.*; class Test { System.out.println( ); Random rnd new Random( ); |
|
C:\Java\>java Test 0:0.9490168285406363 1:0.1315265909356933 2:0.8805518855113684 3:0.022296367930474403 4:0.9159107068525388 5:0.45377169510241844 6:0.1521866646374057 7:0.2681536733194758 8:0.5647590024766241 9:0.5428563464748609 0:0.9448960819203688 C:\Java\> |
Category: Java
1.Javaの基礎
|
3.配列
3章 配列 | ||||||||||||||
1.配列とは | ||||||||||||||
例えば100個のデータが合った場合、これを変数a1,a1,a3・・・a100と設定したのでは大変だから、メモリー上に100個の連続した領域を確保し、何件ものデータを総括的に扱うことのできる方法を配列という。 配列の添え字は、0からはじまるプログラム言語と、1から始まるプログラムがある。Javaは0からはじまる。COBOLは1。Javaは、配列を入れるための変数を宣言し配列の領域を確保し、確保した領域を宣言した変数に入れるという操作をしなければならない。領域を確保する際はどのくらいの大きさの配列かを指定しなければならないが、配列を入れるための変数を宣言する際にはどのくらいの大きさかは宣言しなくても構わない。 |
||||||||||||||
2.配列の宣言と初期化 | ||||||||||||||
Javaでは、配列を使用する場合に配列の最後を越えてアクセスしていないかどうかをチェックしています。つまり10個の要素しかない配列の11番目にアクセスすることはできない。(例外をスローする) | ||||||||||||||
import java.io.*;
class Test{ // 要素数が10の配列の11番目にアクセスしようとした |
||||||||||||||
C:\java>javac Test.java ← コンパイルは正常
C:\java>java Test |
||||||||||||||
配列の領域を確保するのと同時に、初期化を行うこともできる。 int raikyaku[ ] = { 1,2,3,4,5 } ; この場合、配列の大きさは、初期化の際の要素数になる。つまり、上記の例では要素数が5つの配列になる。 |
||||||||||||||
実際の配列領域を入れるための変数があるという事は、配列領域を別の変数に代入することもできる。 | ||||||||||||||
import java.io.*;
class Test{ b = a ; System.out.println(b[3]); a[3] = 100; System.out.println(b[3]); |
||||||||||||||
C:\java>javac Test.java
C:\java>java Test C:\java> |
||||||||||||||
Javaでは変数を用いて配列の領域確保を行うことができる。すなわち、動的に配列のサイズを変化させることができる。 | ||||||||||||||
import java.io.*;
class Test{ |
||||||||||||||
3.配列の使用法 | ||||||||||||||
配列は添え字を用いることで、その要素の読み書きをする。添え字は変数であっても構わない。 「int型」の要素数10個の配列を作り、これに1から10の数字を代入する例 |
||||||||||||||
// 添え字に変数を使わない例 import java.io.*; class Test{ a[0] = 1; |
||||||||||||||
// 添え字に変数を使った例 import java.io.*; class Test{ public static void main(String args[ ]){ int a[ ] = new int [10]; int i; // 添え字 for( i = 0 ; i < 10 ; i++ ) a[i] = i+1; } } |
||||||||||||||
[配列の変数.length]とすることで、配列の大きさを取得できる。 | ||||||||||||||
import java.io.*; class Test{ public static void main(String args[ ]) { int a[ ] = new int [10]; int i; // 添え字 for( i = 0 ; i < a.length ; i++ ) a[i] = i+1; } } |
||||||||||||||
配列のコピー | ||||||||||||||
import java.io.*; class Test{ public static void main(String args[ ]){ int a[ ] = { 5,4,3,2,1 }; int b[ ] = { 1,2,3,4,5 }; // 配列の表示 // 配列のコピー |
||||||||||||||
C:\java>javac Test.java
C:\java>java Test C:\java> |
||||||||||||||
5.2次元配列と多次元配列 | ||||||||||||||
2次元配列とは、配列の配列である。イメージ的には表。1次元配列と同様に、配列を入れるための変数を宣言し、配列領域を確保して変数に代入するとういう手続きが必要になる。 | ||||||||||||||
int a[ ][ ]; // 2次元配列をいれるための変数 a = new int[3][4]; // 3行4列の2次元配列領域を確保 a[0][0] = 10; |
||||||||||||||
int a[ ][ ] = new int[3][4]; // 変数宣言と領域確保を同時にしてもよい
a[0][0] = 10; |
||||||||||||||
10 | 20 | ? | ? | |||||||||||
? | ? | 30 | ? | |||||||||||
? | ? | ? | 40 | |||||||||||
int a[ ][ ] = { { 0, 1, 2, 3 } , { 4, 5, 6, 7 } , { 8, 9, 10, 11 } }; int b[ ][ ] = { { 0 } , { 4, 5, } , { 8, 9, 10, 11 } }; int c[ ][ ] = { { 0, 1, 2, 3 } , { 4, 5, 6, 7 } , { } }; |
||||||||||||||
配列a(3行4列) | 配列b(3行) | 配列c(3行) | ||||||||||||
0 | 1 | 2 | 3 | 0 | X | X | X | 0 | 1 | 2 | 3 | X = 存在しない領域 | ||
4 | 5 | 6 | 7 | 4 | 5 | X | X | 4 | 5 | 6 | 7 | |||
8 | 9 | 10 | 11 | 8 | 9 | 10 | 11 | X | X | X | X | |||