2012-01-05 2 views
1

저는 Java의 초보자입니다. Java가 Gaussian Distribution의 난수 생성기 기능을 가지고 있다는 것을 알고 있습니다. 다른 질문에서 알 수 있듯이 자바 내장 랜덤 제네레이터는 내가 가장 필요로하는 가우스 분포의 입력 평균 및 표준 편차를 취하지 않기 때문에 좋지 않습니다. 나는 유전자 알고리즘에 대해 연구 중이다. 돌연변이의 목적을 위해 나는 Gaussian Distribution, Cauchy Distribution 및 Levy Distribution에서 난수를 생성해야합니다. 생성기 함수는 그 분포의 입력 Scale ParameterLocation Parameter을 가져야합니다. 어떻게해야합니까?Cauchy에서 난수 생성

답변

0

Java에는 이러한 기본 제공자가 없습니다. 당신은 당신 자신의 기능을 만들어야 만합니다. 그렇지 않으면 서드 파티 라이브러리를 찾아야 할 것입니다.

0

문제는 내가 같은 일을 찾고 있었어요로 대답하려고합니다하고 다음 사람 도울 수있는 좀 오래된 있는데도 :

당신이 다음 사항을 알고 있어야 임의의 분포에 대한 RNG를 구현하는 방법을 :

  1. 는 [0,1)의 범위에서 균일하게 분포 수를 생성하는 것은 문제
  2. distributionfunction의 도출 분포 밀도 (예를 들어 가우시안 벨 커브)
  3. distributionfunctio입니다 없다 n은 -Infinity에서 (다소) 0이고 Infinity에서 1입니다. 그 극단들 사이에서 그것은 단조롭게 증가한다.
  4. 이 X이 방정식을 해결 (밀도를 통합)

    1. 이 분포 함수를 계산 :

    이제 당신은 다음과 같은 방법으로이 일 (적어도 1, 3)를 사용해야합니다

  5. 결과 함수에서 균일하게 분포 된 숫자를 매개 변수로 전달하여 적절하게 분산 된 결과를 얻습니다.

예 :

코시 분포 :

F (X) = 1/(x² + 1)/PI

  1. 분포 함수 :

Y = F (x) = arctan (x)/Pi + 0.5 (R -> [0,1] 함수를 얻기 위해 0.5를 더하는 것이 필요하다.

  1. 0 Y-0 (

X = G (Y)의 황갈색 = X 풀기.5) *를 Pi (G는 F의 반대이다 - 보통 F^(- 1)

  1. Now는 함수 (y)으로서 생성 된 이중 입력 : (

    창 Math.tan rand.nextDouble

    X는 가우스 :() -0.5) * Math.PI로 크기 조절을 위해

및 위치 매개 변수 만 다음을 수행해야합니다 (의미 : N을 (0,1)) 배포 확률 론적 변수

,515,

평균 (a * X + b) = A * 평균 (X) + B 바르의 (A * X + b) = a² *이 바르 (X)는이 스케일 파라미터

되고, B는 위치 매개 변수. 따라서 표준 가우스 분산 변수를 생성하고 sqrt (스케일)로 곱하고 위치 매개 변수를 추가하십시오.