균일하지 않은 분포로 임의의 정수 생성

여자 이름

범위 중간에 숫자를 생성 할 가능성이 더 높은 숫자를 생성하는 방법을 찾으려고 노력하고 있습니다. 주어진:

rnum = r.nextInt(5) + 1;//+ 1 to exclude 0

1과 5 사이의 완전한 난수를 생성합니다 ( + 1제거 된 경우 0과 4 ). 내가 원하는 것은 1과 5를 적게 생성하고 3을 많이 생성하는 것입니다. 나는 이것을 시도했다 :

int[] classes = {1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 5, 5};
System.out.println("Class " +  classes[r.nextInt(15)]);//logs the output

그러나 다음을 생성합니다. (print 문이 10 번 반복됨)

Class 2
Class 3
Class 1
Class 4
Class 3
Class 4
Class 2
Class 3
Class 2
Class 5

그러나 이것은 효율적이거나 좋은 방법이 아닙니다. 또한 숫자를 검색하는 데 사용되는 난수 생성기는 중앙 값에 초점을 맞추지 않고 완전히 임의적이기 때문에 위의 출력을 만듭니다. 3은 30 % 만 나타나며 이는 너무 낮습니다. 2도 30 %의 시간에 나타납니다. 즉,이 테스트에서는 3과 동일한 확률이 생성됩니다.

그렇다면 범위 중간에 숫자를 생성 할 확률이 더 높은 무작위로 숫자를 생성하려면 어떻게해야합니까?

Avysk

가장 쉬운 방법은 원하는 확률을 포함하는 배열로 시작하는 것입니다.

import java.util.Random;

class Main {

    public static int getOneNumber(double[] probs, Random rnd) {
        double r = rnd.nextDouble();
        for (int j = 0; j < probs.length; j++) {
            if (r < probs[j]) {
                return j;
            }
            r -= probs[j];
        }
        throw new RuntimeException("probabilities should sum to 1");
    }


    public static void main(String[] args) {

        // Desired probabilities
        double[] probabilities = {
            0.05, // 0
            0.15, // 1
            0.6, // 2
            0.15, // 3
            0.05 }; // 4

        Random rnd = new Random();
        for (int i = 0; i < 20; i++) {
            System.out.println(getOneNumber(probabilities, rnd));
        }
    }
}

여기의 아이디어는 다음과 같습니다. 0과 1 사이의 난수를 생성합니다. 이제 확인합니다. 0.05 미만입니까? 그렇다면 0을 반환하고 0.05 확률로 발생합니다. 그렇지 않은 경우 숫자가 0.05에서 0.15 사이인지 확인합니다 (0.05를 빼고 0.1과 비교하여). 만약 그렇다면 (이것은 확률 0.15-0.05 = 0.1로 발생합니다)-우리는 1을 얻었습니다. 그렇지 않다면 난수가 0.15와 0.75 사이인지 등을 확인합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Bash에서 크고 균일하게 분포 된 임의의 정수를 효율적으로 생성하는 방법은 무엇입니까?

분류에서Dev

Bash에서 크고 균일하게 분포 된 임의의 정수를 효율적으로 생성하는 방법은 무엇입니까?

분류에서Dev

cuRand를 사용하여 균일 분포에서 임의의 정수를 생성하는 올바른 방법은 무엇입니까?

분류에서Dev

균일하게 분포 된 RNG를 통해 3 개의 고유 한 임의의 정수 생성

분류에서Dev

python / numpy에서 동일하지 않은 임의 정수의 여러 쌍 생성

분류에서Dev

지정된 자릿수로 임의의 정수 생성 Java

분류에서Dev

비 균일 확률로 임의의 정수를 생성하는 자바 스크립트 함수

분류에서Dev

정상적으로 분포 된 임의 값을 생성 할 때 범위를 정의하는 가장 효율적인 방법은 무엇입니까?

분류에서Dev

쉼표로 구분 된 임의의 정수 목록을 생성하는 방법

분류에서Dev

변화하는 간격으로 임의의 정수 생성

분류에서Dev

하나의 특정 인덱스를 포함하지 않는 목록에서 임의의 인덱스 생성

분류에서Dev

표준 정규 분포에서 임의의 부동 소수점을 생성하고 다른 부동 소수점으로 곱합니다.

분류에서Dev

백분위 수 제약 조건으로 최상의 지수 분포 생성

분류에서Dev

React App 프로덕션 빌드 런타임 오류 생성 : 정의되지 않은 '호출'속성을 읽을 수 없습니다.

분류에서Dev

OpenMP를 사용하여 C 코드에서 0과 1 사이의 균일하게 분포 된 난수를 생성하는 방법은 무엇입니까?

분류에서Dev

반복되지 않는 임의의 정점 생성

분류에서Dev

XSD 파일은 무제한 횟수로 발생하는 요소의 속성이 정확히 한 번 설정되지 않았는지 확인합니까?

분류에서Dev

동적으로 생성 된 클래스 멤버의 함수에 대한 C ++ 정의되지 않은 참조

분류에서Dev

포착되지 않은 TypeError : 정의되지 않은 HTML의 '스타일'속성을 읽을 수 없습니다.

분류에서Dev

자바 스크립트 런타임 오류 : 동적으로 생성 된 텍스트 상자의 정의되지 않은 또는 null 참조의 '스타일'속성을 가져올 수 없습니다.

분류에서Dev

파이썬을 사용하여 (0,0)을 중심으로 한 40 * 40 직사각형 영역에 균일하게 분포 된 임의의 점을 생성하는 방법은 무엇입니까?

분류에서Dev

모델 생성 중 오류 발생 : 정의되지 않은 함수 put_flash

분류에서Dev

해당 열의 모든 값에 대해 반복 할 필요없이 데이터 프레임의 값 열 아래로 무작위 균일 분포를 생성하는 방법은 무엇입니까?

분류에서Dev

R의 균일하지 않은 다 변수 시계열.

분류에서Dev

런타임시 발생하는 정의되지 않은 오류

분류에서Dev

AWS Lambda : 함수가 성공적으로 생성되었지만 트리거를 생성 할 때 오류가 발생했습니다. 정의되지 않은 속성 '포함'을 읽을 수 없습니다.

분류에서Dev

$ httpprovider로 인해 "정의되지 않은 '헤더'속성을 읽을 수 없음"오류 발생

분류에서Dev

Numpy에서 사전 정의 된 평균값으로 {1, -1}에서 임의 배열을 생성하는 가장 쉬운 방법은 무엇입니까?

분류에서Dev

두 노드 사이의 임의 길이의 방향이 지정되지 않은 속성 경로

Related 관련 기사

  1. 1

    Bash에서 크고 균일하게 분포 된 임의의 정수를 효율적으로 생성하는 방법은 무엇입니까?

  2. 2

    Bash에서 크고 균일하게 분포 된 임의의 정수를 효율적으로 생성하는 방법은 무엇입니까?

  3. 3

    cuRand를 사용하여 균일 분포에서 임의의 정수를 생성하는 올바른 방법은 무엇입니까?

  4. 4

    균일하게 분포 된 RNG를 통해 3 개의 고유 한 임의의 정수 생성

  5. 5

    python / numpy에서 동일하지 않은 임의 정수의 여러 쌍 생성

  6. 6

    지정된 자릿수로 임의의 정수 생성 Java

  7. 7

    비 균일 확률로 임의의 정수를 생성하는 자바 스크립트 함수

  8. 8

    정상적으로 분포 된 임의 값을 생성 할 때 범위를 정의하는 가장 효율적인 방법은 무엇입니까?

  9. 9

    쉼표로 구분 된 임의의 정수 목록을 생성하는 방법

  10. 10

    변화하는 간격으로 임의의 정수 생성

  11. 11

    하나의 특정 인덱스를 포함하지 않는 목록에서 임의의 인덱스 생성

  12. 12

    표준 정규 분포에서 임의의 부동 소수점을 생성하고 다른 부동 소수점으로 곱합니다.

  13. 13

    백분위 수 제약 조건으로 최상의 지수 분포 생성

  14. 14

    React App 프로덕션 빌드 런타임 오류 생성 : 정의되지 않은 '호출'속성을 읽을 수 없습니다.

  15. 15

    OpenMP를 사용하여 C 코드에서 0과 1 사이의 균일하게 분포 된 난수를 생성하는 방법은 무엇입니까?

  16. 16

    반복되지 않는 임의의 정점 생성

  17. 17

    XSD 파일은 무제한 횟수로 발생하는 요소의 속성이 정확히 한 번 설정되지 않았는지 확인합니까?

  18. 18

    동적으로 생성 된 클래스 멤버의 함수에 대한 C ++ 정의되지 않은 참조

  19. 19

    포착되지 않은 TypeError : 정의되지 않은 HTML의 '스타일'속성을 읽을 수 없습니다.

  20. 20

    자바 스크립트 런타임 오류 : 동적으로 생성 된 텍스트 상자의 정의되지 않은 또는 null 참조의 '스타일'속성을 가져올 수 없습니다.

  21. 21

    파이썬을 사용하여 (0,0)을 중심으로 한 40 * 40 직사각형 영역에 균일하게 분포 된 임의의 점을 생성하는 방법은 무엇입니까?

  22. 22

    모델 생성 중 오류 발생 : 정의되지 않은 함수 put_flash

  23. 23

    해당 열의 모든 값에 대해 반복 할 필요없이 데이터 프레임의 값 열 아래로 무작위 균일 분포를 생성하는 방법은 무엇입니까?

  24. 24

    R의 균일하지 않은 다 변수 시계열.

  25. 25

    런타임시 발생하는 정의되지 않은 오류

  26. 26

    AWS Lambda : 함수가 성공적으로 생성되었지만 트리거를 생성 할 때 오류가 발생했습니다. 정의되지 않은 속성 '포함'을 읽을 수 없습니다.

  27. 27

    $ httpprovider로 인해 "정의되지 않은 '헤더'속성을 읽을 수 없음"오류 발생

  28. 28

    Numpy에서 사전 정의 된 평균값으로 {1, -1}에서 임의 배열을 생성하는 가장 쉬운 방법은 무엇입니까?

  29. 29

    두 노드 사이의 임의 길이의 방향이 지정되지 않은 속성 경로

뜨겁다태그

보관