Added a distributed alias_table data structure to ygm. Alias table data structure enables O(1) sampling time from a discrete distribution.
User samples items by calling alias_table::async_sample which requires the user provide a lambda that takes the item sampled as an argument.
Created new namespace ygm::random where the default_random_engine now sits as well as alias_table
Created tests for the new alias table. Further testing will be written for it, I figured I'd get this PR sent to go ahead and start discussing the interface/implementation of the alias table.
alias_table
data structure to ygm. Alias table data structure enables O(1) sampling time from a discrete distribution.alias_table::async_sample
which requires the user provide a lambda that takes the item sampled as an argument.ygm::random
where thedefault_random_engine
now sits as well asalias_table