범위에서 랜덤 이중 생성
나는 다음과 같은 복식이 두 개 있다.
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
'programing' 카테고리의 다른 글
Vuejs 경고 예상 부울 발견 문자열 (0) | 2022.05.09 |
---|---|
GCC 문 표현식을 사용한 익명 함수 (0) | 2022.05.09 |
Vue 구성 요소 외부에서 변수 값을 변경하는 최상의 방법 (0) | 2022.05.09 |
경로 매개변수를 숫자로 전달하는 방법? (0) | 2022.05.09 |
Microsoft Crypto API 사용 안 함 RSAES-OAEP 키 전송 알고리즘 (0) | 2022.05.08 |