바로 지금 다음 코드를 사용하여 범위가있는 정수의 균일 한 분포를 만듭니다. 내가 twords 최소 값을 선호 분포를주고 그것을 수정하려고하지 않으며, 거의 절대 생산하는 최대 값에 가까워하고tr1을 사용하여 비 균일 한 정수 분포 생성
int random(int min, int max)
{
static std::mt19937 gen;
std::uniform_int<int> dist(min, max);
return dist(gen);
}
(I는 시드 코드를했다). 미리 만들어진 분포를 모두 볼 수는 있지만 정수는 아닙니다. 또한 어느 문서에 기반하여 어느 것이 나의 요구에 맞는지 알 수 없습니다. 정수와 함께 사용 혼자 설정을하게하는 방법을 documentation에 따라, k는 = 2
하지만 알아낼 수 없습니다 위키 피 디아에 같이 내가 온 가장 가까운 카이 유통 제곱입니다 k 값.
적절한 비 균일 한 정수 분포를 사용하도록 함수를 설정하려면 어떻게해야합니까? 0이 1보다 더 자주해야로서, 확실히이
아직,하지만 도움이 될 것입니다 여기에 0 ~ 20에서 std::poisson_distribution<int> dist((max - min) * .1);
의 결과는 다음과 같습니다
는 여전히 올바른 배포판을 선택하는 작업 다음 사람은 나와서 더 많은 결과를 올릴 것입니다.
int randomDist(int min, int max)
{
static std::mt19937 gen;
std::chi_squared_distribution<double> dist(2);
int x;
do
{
x = (int)(max*dist(gen)/10) + min;
}
while (x > max);
return x;
}
의 결과 제공 :
아니라 내 최종 솔루션이 방법의 조합이되었다
포아송 분포에서 1보다 작은 매개 변수를 선택하면 0이 더 빈번합니다 (현재 (20-0) * .1 = 2). 또한 매개 변수가있는 기하 분포를 사용하여이를 얻을 수 있습니다. 당신이 선택해야하는 것은 당신이 모델링하는 것에 달려 있습니다 : 기하학적 모델 (time) : 이벤트가 발생할 때까지의 시간 (예를 들어, 골을 넣는 데 필요한 샷 수), 포아송은 일정 시간 간격으로 숫자 이벤트 발생을 모델링합니다 게임의 목표). – aaz
그럼 실시간 유전자 알고리즘에 사용하고 있습니다. 차별화 된 세대를 갖는 대신, 새로운 유기체를 번식시킬 때가되면, 나는이 곡선을 기반으로 한 부모를 선택하여 적합성에 따라 분류합니다. – Zak
@Zak - 기하학적 분포를 사용하여 선택하면 각 부모의 선택을 # 1 대 vs (# 3 대 v ...)의 우승자로 묘사 할 수 있습니다. 여기서 #i가 우승합니다 확률 p를 가진 어떤 #j, i
aaz