Java에서 0과 1 사이의 임의 Double 값 생성

Rupam Yadav 2023년10월12일
  1. Java에서Math.random()을 사용하여 0과 1 사이의 임의 Double 값 생성
  2. Java에서Random().nextDouble()을 사용하여 0과 1 사이의 임의 Double 값 생성
  3. Java에서ThreadLocalRandom.current().nextDouble()을 사용하여 0과 1 사이의 임의 Double 값 생성
Java에서 0과 1 사이의 임의 Double 값 생성

이 기사에서는 기본 유형double의 0과 1 사이의 임의 값을 생성하는 세 가지 방법을 소개합니다. 생성 된 값의 임의성을 증명하기 위해 루프를 사용하여 0과 1 사이의 임의 이중 유형 값 10 개를 생성합니다.

Java에서Math.random()을 사용하여 0과 1 사이의 임의 Double 값 생성

Math클래스는 다양한 수학 연산을 수행하는 데 사용할 수 있습니다. 이 클래스를 사용하여 난수도 생성 할 수 있습니다. Math.random()은 0과 1 사이의 난수를 반환하는 정적 함수입니다. 여기서 0은 생성 된 값을 포함하고 1은 항상 배타적입니다.

다음 예에서는Math.random()을 사용하여double유형의 임의 값을 생성합니다. 출력에서 값이 모두 무작위임을 알 수 있습니다.

public class RandomDouble {
  public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
      double randomDbl = Math.random();

      System.out.println(randomDbl);
    }
  }
}

출력:

0.9537872648347154
0.2863804438195172
0.5815339629441948
0.7734677312115609
0.021051510563543485
0.9064133490694901
0.6833468691871607
0.30655711217738246
0.2730784326888416
0.6804778782692341

Java에서Random().nextDouble()을 사용하여 0과 1 사이의 임의 Double 값 생성

0과 1 사이의 난수를 생성 할 수있는 또 다른 방법은java.util.Random클래스의 일부인nextDouble()입니다. Random클래스의 객체와 함께nextDouble()을 호출하면 이전 예제에서 본 것처럼 0과 1 사이의 임의 값을 반환합니다.

이 메서드는Math.random()보다 효율적이라고합니다.

import java.util.Random;

public class RandomDouble {
  public static void main(String[] args) {
    Random randomObj = new Random();

    for (int i = 0; i < 10; i++) {
      double randomDbl = randomObj.nextDouble();

      System.out.println(randomDbl);
    }
  }
}

출력:

0.240017494934622
0.08331956619499614
0.4359524465181911
0.5291811081068774
0.38193057731688373
0.6969527822622924
0.5436002348156281
0.32176862575520415
0.07327708002828293
0.9005635171231344

Java에서ThreadLocalRandom.current().nextDouble()을 사용하여 0과 1 사이의 임의 Double 값 생성

이 튜토리얼에서 본 두 가지 기술은 다중 스레드 시스템에 효율적이지 않으며 성능이 저하 될 수 있습니다. 이는Random클래스를 사용하여 난수를 생성 할 때 모든 스레드가 동일한 인스턴스를 공유하기 때문에 발생합니다. 즉, 한 스레드에서 변경이 발생하면 다른 모든 스레드도 실행됩니다.

이 문제를 해결하기 위해 Java는 JDK 7 업데이트에서ThreadLocalRandom을 도입했습니다. 현재 스레드에서만 실행되는 클래스이므로 여러 스레드가있는 환경에서 성능이 향상됩니다.

아래 예제에서ThreadLocalRandom.current()로 이중 임의 값을 생성하는nextDouble()을 호출하고 0과 1 사이의 이중 값을 무작위로 생성합니다.

import java.util.concurrent.ThreadLocalRandom;

public class RandomDouble {
  public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
      double randomDbl = ThreadLocalRandom.current().nextDouble();

      System.out.println(randomDbl);
    }
  }
}

출력:

0.9717084711770174
0.8977374014983726
0.2744375247405819
0.2866498720386894
0.6118970047667582
0.7441044456568308
0.21043457873690274
0.08985457420563114
0.86748682220748
0.18952106607144148
작가: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

관련 문장 - Java Random