2012-09-10 2 views
1

에 임의의 변위를 발생 I 최대한 빨리, 다른 임의의 단위 벡터 m로서, 를 생성 할 필요가있다. Nm에서의 편차는 약 N 대칭이어야 양 파라미터 sigma, 단위 구에 m의 분포 정도가되어야한다.단위 벡터 <strong>N</strong> 주어진 단위 구

단위 벡터 표현에 대한 특정 요구 사항이 없으므로 구형 각, 데카르트 좌표 또는 기타 편리하게 사용할 수 있습니다. 또한, msigma에서 n으로 변할 때 쇠퇴하는 한 사용 된 확률 분포에 대한 정확한 요구 사항은 없습니다.

저는 gslC으로 작업하고 있습니다. 데카르트 좌표를 사용하는 다소 복잡한 방법을 생각해 냈습니다. 도움이된다면 나중에 게시 하겠지만 사람들의 아이디어를보고 싶습니다.

+0

설명 : 'n과 m의 편차는 양의 파라미터 σ의 순서 여야합니다.'는 'm과 n 사이의 각도는 평균 0과 표준 편차 σ로 정규 분포되어야합니다.' – japreiss

+0

@japreiss 그와 비슷한 것. 그러나 사용 된 좌표에 제한을두기를 원하지 않기 때문에 아마 누군가는 각도 대신 ** m **과 ** n ** 사이의 거리를 사용하는 것이 더 편리하다고 생각할 것입니다. 그것이 내가 정확하지 않은 이유입니다. – becko

답변

2

이 균일하게 인 분포가 0 인 벡터는 모서리에 더 많은 값이 집중된 점의 큐브가됩니다. 그러나 각 차원이 인 벡터는 일반적으로이고 분포가 약 0입니다. 점의 극점 각도는 단위 구상에 균일하게 분포하고 반경은 원점 근처에 집중됩니다. 매개 변수 sigma을 기반으로 표준 편차를 변경하여 이와 같은 벡터를 생성 할 수 있습니다. n에 벡터를 추가하고 결과를 정규화 한 다음 좋음이라고합니다.

이렇게하려면 1 개의 제곱근과 3 개의 정규 분포 난수가 필요합니다. Ziggurat algorithm을 사용하면 정규 분포 난수를 빠르게 얻을 수 있습니다. 보다 근사적인 옵션은 3 개 이상의 균일하게 분포 된 난수를 합하는 것입니다. 또 다른 가능성 : 많은 랜덤 벡터 테이블을 사전 계산하고 임의의 인덱스를 사용하여 테이블 조회를 수행합니다. 이 방법들 각각은 계산과 저장의 균형을 다르게하기 때문에 모두 코드를 작성하고 속도를 테스트해야합니다.

+0

중요한 수정 사항이 추가되었습니다. 다시 읽으십시오. – japreiss

+0

+1 감사합니다. 이것은 제가 한 일보다 훨씬 좋네요. 나는 그것을 프로그래밍하고 그것이 어떻게되는지 보게 될 것이다.아무 것도 나타나지 않으면 이것을 답으로 표시하겠습니다. – becko

1

구형 극좌표를 사용하지 않는 이유는 무엇입니까? 쇠퇴 요구 사항이 충족되도록 선택된 지수 기하 급수 분포에 따라 간격 [0,2 * pi]과 극각에 걸쳐 균일 한 분포에서 방위각을 생성합니다. 임의로 샘플링 된 극 및 방위각에 의해 원래 n 벡터의 각 변위로 m 벡터를 생성 할 수 있습니다.

+0

내가 말했듯이, 나는 직교 좌표를 사용하고 있으며, 내가하는 일은 당신이 제안한 것과 거의 동일하다. 문제는이 무작위 생성기를 수백만 번 실행해야한다는 것입니다. 직교 좌표에서 삼각 함수 호출은 최소로 유지됩니다. 다른 좌표를 사용하여 함수 호출 수를 줄이는 방법을 알지 못했습니다. – becko