41 lines
1.2 KiB
C++
41 lines
1.2 KiB
C++
#include <iostream>
|
|
#include <vector>
|
|
#include <random>
|
|
|
|
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<int> &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<std::mt19937::result_type> dist_spend_ratios(0,10000 * spend_ratio);
|
|
std::uniform_int_distribution<std::mt19937::result_type> 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<int> &balances, int id, float max_spend_ratio) {
|
|
|
|
}
|
|
|