私は完全な Java 初心者です。私はクラスとメソッドに取り組んでいます。乱数ジェネレーターの最小値を格納するクラス変数を作成しようとしています。
メソッド内の変数ではなく、クラス変数である必要があります。何か案は?発電機を使おうと思いましたMath.random()
。何かのようなもの:
int ranNum = Math.random();
これにより乱数が得られますが、この方法で最小 (または最大) を見つけるにはどうすればよいでしょうか?
私はあなたがこれを求めていると思います:
int min = 50;
int max = 100;
int ranNum = min+(int)(Math.random()*((max-min) + 1));
これにより、最小から最大までの乱数が生成されます(包括的)
これを使って:
import java.util.Random;
Random rand = new Random();
int i = rand.nextInt( 7 - 0 + 1 ); // where 7 is max and 0 is min
以下は、0〜100の乱数を提供します
また、最小のものを提供します:
import java.util.Random;
public class AcademicController
{
private static int i,a=0,small=500;
public static void main(String[] args)
{
Random ran=new Random();
for(i=0;i<100;i++)//enter the range here
{
a=ran.nextInt(100);//gives you any number from 0-99
System.out.println(a);
if(a<small)//if given number is < than previous, make this number small
small=a;
}
System.out.println("small is :"+small);
}
}
それに基づいて独自のランダムメソッドを作成できます。
/**
* Returns a random real number between 0 and x. The number is always
* smaller than x.
*
* @param x The maximum range
* @return A random real number
*/
public static int random(int x){
return (int) (Math.floor(Math.random() * x));
}
/**
* Returns a random real number between x1 (inclusive) and x2 (exclusive).
*
* @param x1 The inclusive
* @param x2 The exclusive
* @return A random real number between x1 and x2
*/
public static int random_range(int x1, int x2){
return (int) (Math.floor(x1 + (Math.random() * (x2 - x1))));
}
これらの簡単な方法がお役に立てば幸いです。
クラスの状態を保持するだけの場合は、次のようになります。
public class MyRandom {
private static final MyRandom INSTANCE = new MyRandom();
public static MyRandom getInstance(){
return INSTANCE;
}
private int low;
private int high;
private Random r = new Random();
private MyRandom(){
}
public int getHigh() {
return high;
}
public int getLow() {
return low;
}
public synchronized int getRandom(){
int next = r.nextInt();
if (next < low){
low = next;
}
if (next > high){
high = next;
}
return next;
}
}
このクラスはシングルトンであり、アプリケーション全体で使用してランダムな値を生成する必要があることに注意してください。