![Table of contents [*]](/skins/2/images/wiki_toc.png)
Randomization
Games often need to make use of random numbers. Use one of the methods described below if your map requires randomization. Switch MethodsSwitches have two states, CLEAR (0) and SET (1).Switch randomization is a built-in function of the Set Switch trigger action. If two different outcomes is not be enough for you, there are ways of generating higher random numbers using switches. Multi-SwitchThis method will allow you to create a random number within the range of zero to some power of 2.Here is a list of how many switches you should use in this method, based on the number of outcomes you need: Code1 Switch: 2 Outcomes 2 Switches: 4 Outcomes 3 Switches: 8 Outcomes 4 Switches: 16 Outcomes 5 Switches: 32 Outcomes 6 Switches: 64 Outcomes 7 Switches: 128 Outcomes 8 Switches: 256 Outcomes 9 Switches: 512 Outcomes 10 Switches: 1024 Outcomes 11 Switches: 2048 Outcomes 12 Switches: 4096 Outcomes 13 Switches: 8192 Outcomes 14 Switches: 16384 Outcomes 15 Switches: 32768 Outcomes 16 Switches: 65536 Outcomes After you determine how many switches you will need, make a trigger to randomize that amount of switches. In this example, we need to select one of the 8 players to go first. There are 8 outcomes, so we will be using 3 switches. With three switches (bits) randomized, there are 8 possible outcomes: Or, in other words: Create a trigger for each possible switch outcome. For out example, we will need 8 triggers: If you need a number of outcomes that is not a power of 2, use the next-highest power of 2, and just re-randomize for all the outcomes you aren't using. It will eventually land on a valid outcome. One SwitchThis method will allow you to create a random number within the range of zero to some power of 2.It is possible to use just one switch to make a random number. This method can be easier to use than the multi-switch method because it stores the outcome in a counter, instead of in a bunch of switches. You can use 'at least' and 'at most' with a death counter. Start by randomizing the switch. If the switch is set, add 1 to your counter. Randomize the switch again. If the switch is set this time, add 2 to your counter. Randomize the switch **again**. If the switch is set this time, add 4 to your counter. Now the death counter for 'Unit' will have a random number in the range of 0-7. Use the Deaths condition to detect the number. If you want to make a random number in a higher range, keep randomizing the switch and adding the next highest power of 2 to the counter. See the list above for how many outcomes you get for the amount of times you randomize the switch. Other MethodsThere are some easier, but less accurate, methods of getting random numbers.View these methods as making 'ever-changing' numbers, rather than actual random numbers. Cycling CounterThe numbers you get from this method will not be random, but if you use some kind of user input, it will be an unpredictable number. (Example: A human player has to take a unit to a beacon to activate the trigger)Create a trigger that always adds 1 to a counter. Also make a trigger that resets the counter to 0 when it goes past a certain range. Our range is 0-7, so 8 is out of bounds. Use the Deaths condition to detect the number. Make a trigger to detect each possible outcome. The number you get will depend completely on when the trigger is activated. Use hyper triggers for this method. Roaming UnitCritters (or units using the junkyard dog AI script) move around in an unpredictable manner.To use this to get a number, first make an area for the unit to move around in, and put locations that cover all parts of it. ![]() Use the Bring condition to detect which location the unit is touching. Make different outcomes base on the location. It is possible for the unit to remain in the same location for long time. The quality of this method is questionable. Its usefulness is limited. |