Comments (2)
I'm definitely a fan of Vose' Alias Method, from the Darts, Dice and Coins article. I've also implemented it in C# (also MIT-licensed) if anyone wants it: https://github.com/tommyettinger/ShaiRandom/blob/main/ShaiRandom/Collections/ProbabilityTable.cs
The question with Vose' Alias Method is mostly if weighted random sampling is done enough times, from a large enough pool of items, to matter in terms of performance. It isn't much more complicated, but if the set of weights changes very often, then it can be slower than the existing code (O(n) to build the table, so if the table is frequently re-built, then the O(1) performance of each query might not help enough).
Also, I think FirstNonZeroPosition is nearly equivalent to this .NET Core and higher method: https://docs.microsoft.com/en-us/dotnet/api/system.numerics.bitoperations.trailingzerocount?view=net-6.0#system-numerics-bitoperations-trailingzerocount(system-int32)
from markovjunior.
Thanks @tommyettinger, I used TrailingZeroCount()
. The article is great, but Power()
and weighted random are called so rarely that optimizing them wouldn't be worth the increase in complexity.
from markovjunior.
Related Issues (20)
- Running GUI HOT 9
- How to run on Linux HOT 11
- Documentation for xml format HOT 10
- Customizability of models? HOT 2
- FileNotFoundException when run from other root path
- The type initializer for 'GUI' threw an exception HOT 2
- Open up GitHub discussions HOT 1
- Any Unity usage example in the future? HOT 1
- Build failed with step as 'How to build' section HOT 2
- Is it possible to define the probability of rules in one node? HOT 1
- The intro page does not explain how MJ start running when there's no rule matched at the first place HOT 2
- Document Probability Attribute HOT 1
- Are there command line arguments or a UI? HOT 2
- map doesn't work with GUI HOT 1
- Symmetry issue (or missunderstanding) HOT 3
- Question about MarkovNode nesting and union. HOT 2
- linux version HOT 2
- The .exe file won't run HOT 3
- Constraint HOT 1
- What to do after building? HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from markovjunior.