プリミティブデータ型shortの範囲(-32768、32767)でランダムな整数を生成しようとしています。 Java Randomオブジェクトは正の数値のみを生成します。その間隔でランダムに数値を作成するにはどうすればよいですか?ありがとう。
(0, 32767+32768)
でランダムにし、次に32768
で減算します
Random random=new Random();
int randomNumber=(random.nextInt(65536)-32768);
public static int generatRandomPositiveNegitiveValue(int max , int min) {
//Random Rand = new Random();
int ii = -min + (int) (Math.random() * ((max - (-min)) + 1));
return ii;
}
これは私が知っている古い質問ですが、ええと....
n=n-(n*2)
0〜65535の数値を生成してから、32768を差し引く
([ここで私の二重互換プリミティブ型])(Math.random()* [ここで私の最大値] *(Math.random()> 0.5?1:-1))
例:
// need a random number between -500 and +500
long myRandomLong = (long)(Math.random() * 500 * (Math.random() > 0.5 ? 1 : -1));
(Math.floor((Math.random()* 2))> 0?1:-1)* Math.floor((Math.random()* 32767))
ユーザーがダブルバージョンに興味がある場合(MAX_VALUEまたはMIN_VALUEが渡された場合、これは機能しないことに注意してください):
private static final Random generator = new Random();
public static double random(double min, double max) {
return min + (generator.nextDouble() * (max - min));
}