GS_Random
Random utilities — weighted random selection and deterministic random value generation for procedural and gameplay systems.
Categories:
Overview
The Random utilities provide weighted random selection for gameplay and procedural systems. The primary utility is GetRandomWeighted, a template function that selects an item from a collection based on assigned weights — higher weights mean higher probability of selection.
Seed-based deterministic random generation is planned for GS_Core v2.
API Reference
RandomUtils (Template Utility)
| Function | Description |
|---|---|
GetRandomWeighted<T>(collection) | Selects a random item from a weighted collection. Each item must provide a weight value. Items with higher weights are proportionally more likely to be selected. |
Usage Example
#include <GS_Core/Utilities/RandomUtils.h>
// Define weighted items (e.g., loot drops)
struct LootEntry
{
AZStd::string itemName;
float weight; // Higher = more common
};
AZStd::vector<LootEntry> lootTable = {
{ "Common Sword", 50.0f },
{ "Rare Shield", 30.0f },
{ "Epic Helmet", 15.0f },
{ "Legendary Ring", 5.0f },
};
// Select a random item weighted by drop rate
auto selected = GS_Core::RandomUtils::GetRandomWeighted(lootTable);
// "Common Sword" is 10x more likely than "Legendary Ring"
See Also
- Core Utilities — Springs, curves, and physics trigger volumes