[java] 범위에서 임의의 이중 생성

나는 다음과 같은 두 복식이 있습니다

double min = 100;
double max = 101;

랜덤 생성기로 최소값과 최대 값 사이의 이중 값을 만들어야합니다.

Random r = new Random();
r.nextDouble();

그러나 여기서 범위를 지정할 수있는 곳은 없습니다.



답변

사이의 임의의 값을 생성하는 방법 rangeMinrangeMax:

Random r = new Random();
double randomValue = rangeMin + (rangeMax - rangeMin) * r.nextDouble();


답변

이 질문은 Java 7 릴리스 이전에 요청되었지만 이제 Java 7 (이상) API를 사용하는 또 다른 방법이 있습니다.

double random = ThreadLocalRandom.current().nextDouble(min, max);

nextDouble최소 (포함)와 최대 (제외) 사이의 의사 난수 double 값을 반환합니다. 경계가 반드시 필요한 것은 아니며 int가능할 수도 있습니다 double.


답변

이것을 사용하십시오 :

double start = 400;
double end = 402;
double random = new Random().nextDouble();
double result = start + (random * (end - start));
System.out.println(result);

편집하다:

new Random().nextDouble(): 0과 1 사이의 숫자를 임의로 생성합니다.

start: 시작 번호, 번호를 “오른쪽으로”이동

end - start: 간격. random은 0에서 1까지의 숫자를주기 때문에이 숫자의 0 %에서 100 %까지를 제공합니다.


편집 2 :
Tks @daniel 및 @aaa bbb. 내 첫 대답은 틀렸다.


답변

import java.util.Random;

public class MyClass {
     public static void main(String args[]) {
          Double min = 0.0;  // Set To Your Desired Min Value
          Double max = 10.0; // Set To Your Desired Max Value
          double x = (Math.random() * ((max - min) + 1)) + min;   // This Will Create A Random Number Inbetween Your Min And Max.
          double xrounded = Math.round(x * 100.0) / 100.0;   // Creates Answer To The Nearest 100 th, You Can Modify This To Change How It Rounds.
          System.out.println(xrounded);    // This Will Now Print Out The Rounded, Random Number.
     }
}


답변

Random random = new Random();
double percent = 10.0; //10.0%
if (random.nextDouble() * 100D < percent) {
    //do
}


답변

랜덤의 주요 아이디어는 의사 난수 값을 반환한다는 것입니다. 완전 랜덤 함수와 같은 것은 없으므로 동일한 시드를 사용하는 2 개의 랜덤 인스턴스는 특정 조건에서 동일한 값을 반환합니다.

doc 함수를 이해하려면 먼저 doc 함수를 보는 것이 좋습니다 ( https://docs.oracle.com/javase/8/docs/api/java/util/Random.html )

nextDouble () 함수의 반환 값이 0.0과 1.0 사이의 의사 난수 값이라는 것을 이해 했으므로이 값을 유리하게 사용할 수 있습니다.

경계가 유효한 (A> B) A와 B givin ‘사이에 난수를 만들려면 다음을 수행해야합니다. 1. A와 B 사이의 범위를 찾아서 여러 “단계”를 수행하는 방법을 알 수 있습니다. 2. random 함수를 사용하여 수행 할 단계 수를 결정합니다 (반환 된 값이 0.0과 1.0 사이이므로 “임의의 임의 백분율 증가”로 생각할 수 있음). 3. 오프셋 추가

그 후, 당신은 폭도들이 당신에게 내 의견으로는 가장 쉽고 가장 일반적인 방법을 제공했음을 알 수 있습니다

double randomValue = rangeMin + (rangeMax-rangeMin) * r.nextDouble ();

double RandomValue = 오프셋 + (범위) * (0.0-1.0 사이의 randomVal)


답변