Implementation of Walker's Alias method by Elixir. The algorithm is principally useful when you need to random sampling with replacement by O(1).
defdepsdo[{:alias_method,"~> 0.1.0"}]endiex>weights=[1,1,8]iex>table=AliasMethod.generate_table(weights)iex>table%AliasMethod.Table{alias_table: %{0=>2,1=>2,2=>0},length: 3,probability_table: %{0=>0.3,1=>0.3,2=>1.0}}iex>n=AliasMethod.choice(table)iex>0<=n&&n<=table.lengthtrueThis project is licensed under the MIT License - see the LICENSE file for details
Tomochika Hara - thara