|
OpenTTD
|
Pseudo random number generator. More...
Go to the source code of this file.
Data Structures | |
| struct | Randomizer |
| Structure to encapsulate the pseudo random number generators. More... | |
| struct | SavedRandomSeeds |
| Stores the state of all random number generators. More... | |
Functions | |
| static void | SaveRandomSeeds (SavedRandomSeeds *storage) |
| Saves the current seeds. | |
| static void | RestoreRandomSeeds (const SavedRandomSeeds &storage) |
| Restores previously saved seeds. | |
| void | SetRandomSeed (uint32 seed) |
| (Re)set the state of the random number generators. | |
| static uint32 | Random () |
| static uint32 | RandomRange (uint32 limit) |
| Pick a random number between 0 and limit - 1, inclusive. | |
| static uint32 | InteractiveRandom () |
| static uint32 | InteractiveRandomRange (uint32 limit) |
| static bool | Chance16I (const uint a, const uint b, const uint32 r) |
| Checks if a given randomize-number is below a given probability. | |
| static bool | Chance16 (const uint a, const uint b) |
| Flips a coin with given probability. | |
| static bool | Chance16R (const uint a, const uint b, uint32 &r) |
| Flips a coin with a given probability and saves the randomize-number in a variable. | |
Variables | |
| Randomizer | _random |
| Random used in the game state calculations. | |
| Randomizer | _interactive_random |
| Random used every else where is does not (directly) influence the game state. | |
Pseudo random number generator.
Definition in file random_func.hpp.
|
inlinestatic |
Flips a coin with given probability.
This function returns true with (a/b) probability.
| a | The nominator of the fraction |
| b | The denominator of the fraction |
Definition at line 133 of file random_func.hpp.
References Chance16I().
Referenced by BuildTownHouse(), ChangeIndustryProduction(), CheckIfTrainNeedsService(), Disaster_Helicopter_Init(), DisasterTick_Submarine(), FindSubsidyCargoDestination(), GenerateTowns(), GrowTownInTile(), IndustryDailyLoop(), IsRoadAllowedHere(), SetupFarmFieldFence(), Vehicle::ShowVisualEffect(), TileLoop_Town(), and UpdateTownGrowRate().
|
inlinestatic |
Checks if a given randomize-number is below a given probability.
This function is used to check if the given probability by the fraction of (a/b) is greater than low 16 bits of the given randomize-number r.
Do not use this function twice on the same random 16 bits as it will yield the same result. One can use a random number for two calls to Chance16I, where one call sends the low 16 bits and the other the high 16 bits.
| a | The numerator of the fraction |
| b | The denominator of the fraction, must of course not be null |
| r | The given randomize-number |
Definition at line 114 of file random_func.hpp.
Referenced by Chance16(), Chance16R(), and ChangeIndustryProduction().
|
inlinestatic |
Flips a coin with a given probability and saves the randomize-number in a variable.
This function uses the same parameters as Chance16. The third parameter must be a variable the randomize-number from Random() is saved in.
The low 16 bits of r will already be used and can therefore not be passed to Chance16I. One can only send the high 16 bits to Chance16I.
| a | The numerator of the fraction |
| b | The denominator of the fraction |
| r | The variable to save the randomize-number from Random() |
Definition at line 157 of file random_func.hpp.
References Chance16I().
Referenced by AmbientSoundEffectCallback(), HandleCrashedAircraft(), and HandleCrashedTrain().
|
inlinestatic |
Pick a random number between 0 and limit - 1, inclusive.
That means 0 can be returned and limit - 1 can be returned, but limit can not be returned.
| limit | Limit for the range to be picked from. |
Definition at line 83 of file random_func.hpp.
References Randomizer::Next().
Referenced by AnimateTile_Town(), BuildTownHouse(), ChangeIndustryProduction(), CmdBuildIndustry(), CmdExpandTown(), Vehicle::Crash(), CreateNewIndustry(), DisasterTick_Ufo(), DoCreateNewIndustry(), FindSubsidyTownCargoRoute(), FlowRiver(), GenerateIndustries(), Industry::GetRandom(), Town::GetRandom(), FlowStat::GetVia(), FlowStat::GetViaWithRestricted(), GrowTownWithBridge(), RandomHeight(), LinkRefresher::RefreshStats(), AIScannerInfo::SelectRandomAI(), IndustryBuildData::SetupTargetCount(), SubsidyMonthlyLoop(), StationCargoList::Truncate(), and IndustryBuildData::TryBuildNewIndustry().
|
inlinestatic |
Restores previously saved seeds.
| storage | Storage where SaveRandomSeeds() stored th seeds |
Definition at line 54 of file random_func.hpp.
Referenced by CmdAutoreplaceVehicle().
|
inlinestatic |
Saves the current seeds.
| storage | Storage for saving |
Definition at line 44 of file random_func.hpp.
References _interactive_random, and _random.
Referenced by CmdAutoreplaceVehicle().
| void SetRandomSeed | ( | uint32 | seed | ) |
(Re)set the state of the random number generators.
| seed | the new state |
Definition at line 67 of file random_func.cpp.
References Randomizer::SetSeed().
1.8.1.2