Markov 체인 과 같은 시뮬레이션을 만들고 discrete_distribution을 사용하여 상태 s_i에서 s_j 로의 변경을 시뮬레이트하려고합니다. 물론 이것은 매트릭스가 아니라 벡터입니다. 그래서 해보겠습니다."discrete_distribution"의 벡터를 설정하는 방법
std::vector <uint16_t> v {{...},
{...},
...
{...},};
std::vector <std::discrete_distribution <uint16_t> > distr(n, std::distribution <uint16_t> (v.begin(), v.end()));
그러나 이것은 작동하지 않습니다.
참고 : uint16_t의 벡터
std::vector <std::discrete_distribution <uint16_t> > distr(n, std::distribution <uint16_t> (v.begin(), v.end()));
가 올바르지 않은 것을 내가 알고있는이 answer
에 따라
// CHANGE v by v[0]
std::vector<std::discrete_distribution <uint64_t>> distr(1, std::discrete_distribution <uint64_t> (vecs[0].begin(), vecs[0].end()));
작동 난 그냥 1 개 벡터를하려고하면,이된다 ,하지만 나는 v1에서 v2로 변화에 대해 말할 수있다. 이산 분포의 벡터를 사용할 수 있음을 증명하기 위해서
'v1'이라고 불리는이 던져 버리는 벡터를 만드는 대신에 중첩 된 ve를 초기화하지 않는 것이 어떻습니까? 한 번에 ctor? – tadman
나는 그것을하는 방법을 몰랐기 때문에. 그러나 지금 아래의 답을 알고 있습니다. –
아주 간단합니다. 비토리오가 잘 설명해줍니다. 이 질문은 주로 그것에 관한 것입니까, 아니면'discrete_distribution' 부분에 여전히 문제가 있습니까? – tadman