問題の数学部分に問題がある。
このクラスは、値を他の 2 つの数値 (両端を含む) の間の乱数に設定することになっています。
元。20 が渡され、平均が 70 だった場合、60 から 80 の間の乱数が生成され、値として格納されます。
式の一部が (平均 - 範囲/2) と (平均 + 範囲/2) であることは知っています。
range = 渡された数。
average = 元の数。
問題の数学部分に問題がある。
このクラスは、値を他の 2 つの数値 (両端を含む) の間の乱数に設定することになっています。
元。20 が渡され、平均が 70 だった場合、60 から 80 の間の乱数が生成され、値として格納されます。
式の一部が (平均 - 範囲/2) と (平均 + 範囲/2) であることは知っています。
range = 渡された数。
average = 元の数。
あとは、Random
オブジェクトを使用して範囲内の乱数を取得するだけです。ループでそれらのうちの 10 個を取得するコードを次に示します。
import java.util.Random;
public class RandomNumber
{
public static void main(String[] args) {
int range = 20;
int average = 70;
int base = average - range/2;
Random rand = new Random();
for (int i = 0; i < 10; i++) {
int num = rand.nextInt(range + 1) + base;
System.out.println(num);
}
}
}
メソッドを呼び出すとnextInt(int n)
0 (含む) から n (含まない) までの乱数が返されるrange + 1
ため、下限だけでなく範囲の両端を含める必要があるため、それを渡す必要があります。上記の値を使用すると、 への呼び出しrand.nextInt(range + 1)
は 0 から 20 までの値を返します。60のbase
値が追加されると、これらの値は 60 ~ 80 に変換されます。