Я новичок в C ++ и чрезвычайно удивлен отсутствием доступных, распространенных инструментов для манипулирования вероятностями (то есть отсутствием вещей в Boost и стандартной библиотеке). Я много занимался научным программированием на других языках, но стандартные и / или вездесущие сторонние дополнения всегда включают в себя полный набор вероятностных инструментов. Друг объявил, что Boost является эквивалентным вездесущим дополнением для C ++, но когда я читаю документацию Boost, даже у него, похоже, не хватает того, что я считаю чрезвычайно элементарными встроенными модулями.
Я не могу найти встроенную функцию, которая принимает некоторый массив дискретных вероятностей и производит индекс, выбранный в соответствии с этими вероятностями. Конечно, я могу написать свою собственную функцию для этого, но я просто хотел проверить, не хватает ли мне стандартного способа сделать это.
Мне кажется, что писать свои собственные функции на таком низком уровне плохо, но я пишу новый модуль моделирования для более крупного проекта, все на C ++. Моя обычная тактика перехода состоит в том, чтобы написать это на Python и связать Python с C ++, но поскольку нескольким людям придется управлять этим кодом, как только я закончу его, и никто из них не знает Python, я думаю, что это будет быть более разумным, чтобы доставить их всем на C ++.
В более общем смысле, что люди делают в C ++ для таких вещей, как выборка из стандартных дистрибутивов, в частности, таких простых, как многовариантное нормальное распределение?