#include #include #include std::random_device econ_dev; std::mt19937 econ_rng(econ_dev()); /** * @brief Simple random economic spend decision * * @param balances Balances vec * @param id ID of participant making the decision * @param spend_ratio Proportion of savings they are willing * to spend */ void economic_decision_simple(std::vector &balances, int id, float spend_ratio) { // assert(spend_ratio > 0 && spend_ratio <= 1); int total_bal = balances.at(id); // random spend ratio is too costly // std::uniform_int_distribution dist_spend_ratios(0,10000 * spend_ratio); std::uniform_int_distribution dist_len(0,balances.size()-1); int spendable = spend_ratio * total_bal; int recipient_id = dist_len(econ_rng); balances.at(id) -= spendable; balances.at(recipient_id) += spendable; } /** * @brief balances vec * * @param balances Balances vec * @param id ID of participant making decision * @param id ID of participant making decision */ void economic_decision_tiered(std::vector &balances, int id, float max_spend_ratio) { }