void CSoftMaxCPD::GenerateSample(CEvidence* evidence, int maximize) const { //need to check //is all parents observed int NNodes = m_Domain.size(); bool isObserved = true; for (int node = 0; node < NNodes - 1; node++) if (!evidence->IsNodeObserved(m_Domain[node])) isObserved = false; CPotential *pTabPot; if (!isObserved) { PNL_THROW(CAlgorithmicException, "all parents must be observed"); } pTabPot = ConvertWithEvidenceToTabularPotential(evidence); pTabPot->GenerateSample(evidence); delete pTabPot; }