ゲームなどでランダムな数を生成したいときには、Math クラスの random メソッドを使うことができます。
今回はスロットマシンのようなプログラムで、使用例を紹介します。
class RandomSlot { public static void main( String[] args ) { final double NUM_TO = 10.0; final int LUCKY_NUM = 7; final int UPPER_CNT = 200; int i, n1, n2, n3; for( i = 0; i < UPPER_CNT; i++ ) { n1 = (int)( Math.random() * NUM_TO ); n2 = (int)( Math.random() * NUM_TO ); n3 = (int)( Math.random() * NUM_TO ); System.out.print( n1 + " " + n2 + " " + n3 ); if( n1 == n2 && n1 == n3 ) { if( n1 == LUCKY_NUM ) System.out.print( " ** Jackpot ** " ); System.out.println( " MATCH! (" + (i+1) + "回目でした)" ); break; } System.out.println(); } if( i == UPPER_CNT ) System.out.println( "MATCHしませんでした" ); } }実行結果例
4 7 9 8 1 8 5 8 5 : (途中略) 7 4 7 8 2 2 7 7 7 ** Jackpot ** MATCH! (65回目でした)上のプログラムでは、200回(UPPER_CNT)までスロットを回します。
【 擬似乱数を生成する Math.random 】 public static double random( void )(他に、java.util.Randomクラスのメソッドを使う方法もあります。)
int n = (int)( Math.random() * 10.0 );random から 0.0〜1.0 未満の値が返されるので、10倍して int にキャストし端数を切り捨てれば、1桁の整数が得られます。
上のプログラムで、final 変数の NUM_TO, UPPER_CNT, LUCKY_NUM に代入する値を書き換えると、条件を変えることができます。 たとえば NUM_TO を 5.0 に書き換えると、0 から 4 の数字しか出ないスロットマシンになります。
(今回のクイズです)public static String getMMDD( String s ) { int n = s.lastIndexOf( "." ); if( n == -1 ) return s; return s.substring( n-4, n ); }s が "Dat.0531.txt" だとすると、txt の前の . の位置が n に求まります。