programing

범위에서 랜덤 이중 생성

prostudy 2022. 5. 9. 21:57
반응형

범위에서 랜덤 이중 생성

나는 다음과 같은 복식이 두 개 있다.

double min = 100;
double max = 101;

무작위 생성기로 최소값과 최대값 사이의 이중값을 만들어야 해

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

하지만 여기서 범위를 지정할 수 있는 건 아무것도 없어

다음 사이의 랜덤 값을 생성하려면 다음과 같이 하십시오.rangeMin그리고rangeMax:

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

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

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

nextDouble 최소값(최소값)과 최대값(최소값) 사이의 유사andom 이중값을 반환한다.한계가 반드시 있는 것은 아니다.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: 간격.랜덤은 이 숫자의 0%에서 100%까지 당신에게 준다. 왜냐하면 랜덤은 당신에게 0에서 1까지의 숫자를 주기 때문이다.


EDIT 2: Tks @daniel and @aa 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.
     }
}

희망, 이것이 가장 도움이 될 수 있다: Java의 무작위 번호 생성기


전체 프로그램 공유:

import java.util.Random;

public class SecondSplitExample
{
    public static void main(String []arguments)
    {
        int minValue = 20, maxValue=20000;
        Random theRandom = new Random();
        double theRandomValue = 0.0;
        
        // Checking for a valid range-
        if( Double.valueOf(maxValue - minValue).isInfinite() == false ) 
            theRandomValue = minValue + (maxValue - minValue) * theRandom.nextDouble();
        
        System.out.println("Double Random Number between ("+ minValue +","+ maxValue +") = "+ theRandomValue);
    }
}

다음은 3회 주행의 출력이다.

Code>java SecondSplitExample
Double Random Number between (20,20000) = 2808.2426532469476

Code>java SecondSplitExample
Double Random Number between (20,20000) = 1929.557668284786

Code>java SecondSplitExample
Double Random Number between (20,20000) = 13254.575289900251

자세한 정보:

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

무작위의 주요 개념은 가성비를 반환한다는 것이다.완전한 무작위 함수와 같은 것은 없으므로, 같은 시드를 사용하는 2 랜덤 인스턴스는 특정 조건에서 동일한 값을 반환한다.

function doc을 이해하기 위해서는 먼저 function doc을 보는 것이 좋다(https://docs.oracle.com/javase/8/docs/api/java/util/Random.html)

nextDouble() 함수의 반환 값이 0.0에서 1.0 사이의 유사 함수의 값이라는 것을 이제 이해했으므로, 우리는 그것을 우리에게 유리하게 사용할 수 있다.

A와 B의 매라고 생각해라 사이에 경계를 유효하다 무작위로 많이 만들어서 들어(A>, B)우리가 1.A와 B어서 어떻게 우리는 많은"단계"다. 알 수 있는 2. 사용은 무작위 함수 몇 걸음을 취하는 데(기 때문에 반환된 값은 0.0과 1.0당신이 그것으로서 생각할 수 있다며 임의의 해 보시기 inc. 사이의 범위를 찾: 필요가 있rease" 3. 오프셋 추가

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

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

이중 랜덤값 = 오프셋 + (범위)*(RandomValue 0.0-1.0)

참조URL: https://stackoverflow.com/questions/3680637/generate-a-random-double-in-a-range

반응형