
Rnd:weighted-one-of rnd:weighted-n-of rnd:weighted-n-of-with-repeats rnd:weighted-one-of-list rnd:weighted-n-of-list rnd:weighted-n-of-list-with-repeats rnd:weighted-one-of The previous remarks apply to agentset primitives as much as they apply to list primitives. This should not happen too often, however, so while picking without repeats has an upper bound of O(m * n) in theory, it should usually not be much more than O(m + n) in practice. When this starts happening too often (maybe because some weights are much bigger than others), the extension re-initializes the algorithm with the already-picked candidates excluded. In this case, the algorithm may have to discard some picks because the candidates have already been selected. Things are a bit more complicated if you are choosing without repeats, however. (Note that composing n-values with rnd:weighted-one-of-list does not preserve the order of the original candidate list, while rnd:weighted-n-of-list-with-repeats does.) This is because rnd:weighted-n-of-list-with-repeats only initializes the algorithm once and rnd:weighted-one-of does it each time it is called. the line using rnd:weighted-n-of-list-with-repeats will likely run 100 times faster than the line using a combination of n-values and rnd:weighted-one-of-list. Rnd:weighted-n-of-list-with-repeats 100 candidates -> w ] Assuming you are choosing n candidates for a collection of size m with repeats, this method has an initialization cost of O(m) followed by a cost of O(1) for each item you pick, so O(m + n) overall. The extension uses Keith Schwarz's implementation of Vose's Alias Method (see Schwarz's Darts, Dice, and Coins page). If you want to select more than one items, you will also need to tell it:
#NETLOGO RANDOM NUMBER CODE#
If you were using the old version of the extension, you will need to modify your code to use the new primitives.) ( Note: the initial version of the extension had a single set of primitives for both lists and agentsets, but it turned out to be confusing, so we changed it. The following table summarizes the situation: It also depends on whether you want one or many items and, if you want many, if repeats are allowed or not.

Which primitive to use depends on whether you want to select an item from a list or from an agenset. It provides a simpler way to accomplish the same thing as the Lottery Example from the NetLogo Models Library. This extension adds the ability to do roulette wheel selection in NetLogo. Just unzip the file under NetLogo's extensions/ folder. You can find versions the latest version of rnd as well as archives of releases compatible with older NetLogo versions in the project's Github releases page here.

The rnd extension comes bundled with NetLogo 6.0 and later.
