| 47 | }; |
| 48 | |
| 49 | std::unique_ptr<Sampling> AliasSampling::Create(const vec_float_t& probs) { |
| 50 | std::unique_ptr<Sampling> sampling(new AliasSampling); |
| 51 | if (!dynamic_cast<AliasSampling*>(sampling.get())->Init(probs)) { |
| 52 | DXERROR("Failed to init alias sampling."); |
| 53 | sampling.reset(); |
| 54 | } |
| 55 | return sampling; |
| 56 | } |
| 57 | |
| 58 | int_t AliasSampling::Next() const noexcept { |
| 59 | size_t table_size = alias_probs_.size(); |