This commit is contained in:
2022-12-01 05:59:32 +08:00
parent 263bde65fb
commit 2b25d61dfb
7 changed files with 148 additions and 39 deletions

View File

@@ -1,12 +1,32 @@
#include<iostream>
#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);
std::cout << "test" << std::endl;
int total_bal = balances.at(id);
int spendable = (random() * spend_ratio) * total_bal;
int recipient_id = random() * (balances.size());
// 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;
}
void economic_decision_tiered(std::vector<int> &balances, int id, float spend_ratio) {
}

View File

@@ -16,14 +16,13 @@ void dump_balances_csv(std::vector<int> balances, std::string name) {
file.close();
}
void dump_balances_and_ages_csv(std::vector<int> balances, std::vector<int> ages, std::string name) {
assert(balances.size() == ages.size());
std::string csv_data = "Id,Balance,Age\n";
for (int i = 0; i < balances.size(); i++) {
csv_data += std::to_string(i+1)+ "," +
std::to_string(ages[i]) + "," +
std::to_string(balances[i]) + "\n";
std::to_string(balances[i]) + "," +
std::to_string(ages[i]) + "\n";
}
std::ofstream file;
file.open(name + ".csv");

12
include/util.hpp Normal file
View File

@@ -0,0 +1,12 @@
#include <iostream>
#include <vector>
#include <random>
std::random_device util_dev;
std::mt19937 util_rng(util_dev());
int random_item(std::vector<int> items, bool get_id) {
std::uniform_int_distribution<std::mt19937::result_type> dist_len(0,items.size()-1);
int id = dist_len(util_rng);
return get_id ? id : items[id];
}