web-dev-qa-db-ja.com

Javaで正と負の乱数を生成する方法

プリミティブデータ型shortの範囲(-32768、32767)でランダムな整数を生成しようとしています。 Java Randomオブジェクトは正の数値のみを生成します。その間隔でランダムに数値を作成するにはどうすればよいですか?ありがとう。

28
user455497

(0, 32767+32768)でランダムにし、次に32768で減算します

53
pinichi
Random random=new Random();
int randomNumber=(random.nextInt(65536)-32768);
22
Truth
public static int generatRandomPositiveNegitiveValue(int max , int min) {
    //Random Rand = new Random();
    int ii = -min + (int) (Math.random() * ((max - (-min)) + 1));
    return ii;
}
5
duggu

これは私が知っている古い質問ですが、ええと....

n=n-(n*2)
4
Ethan

0〜65535の数値を生成してから、32768を差し引く

4
jcopenha

([ここで私の二重互換プリミティブ型])(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));
1
Russ Jackson

(Math.floor((Math.random()* 2))> 0?1:-1)* Math.floor((Math.random()* 32767))

0
UP209D

ユーザーがダブルバージョンに興味がある場合(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));
 }
0
Brian