Description
Syntax
Syntax 1
random x
Parameters:
Returns: Number from 0 (included) to x, excluded
Important
x was accidentally included due to a bug introduced in Arma 2 v1.00 and fixed in Arma 3 v2.18.
Syntax 2
since arma3 1.56
random [min, mid, max]
Parameters:
Returns: Number in range from min to max, weighted by mid - can be higher than max (maximum value is min + max - mid)
Syntax 3
since arma3 1.68
seed random x
Parameters:
seed: Number - an integer. Any float value will be truncated (e.g -0.9, -0.1, 0.1 or 0.9 will be read as 0)
x: Number
Returns: Number from 0 (included) to x (included)
Syntax 4
since arma3 1.68
seed random [x, y]
Parameters:
Returns: Number from 0 (included) to 1 (excluded)
Examples
Example 1
_rNumber = random 1;
Example 2
_rNumber = random -10;
Example 3
Generate a random position inside a circle (see also Example Code: Random Area Distribution)
_center getPos [_radius * sqrt random 1, random 360];
Example 4
Select a random value from an array:
_array = ["apples", "pears", "bananas", "M16"];
_random = _array select floor random count _array;
_random = _array call BIS_fnc_selectRandom;
_random = selectRandom _array;
Example 5
Visualisation of #Syntax 4 (warning, it takes a bit to execute and draw):
private _parent = call BIS_fnc_displayMission;
if (is3DEN) then { _parent = findDisplay 313 };
private _display = _parent createDisplay "RscDisplayEmpty";
private _background = _disp ctrlCreate ["RscBackground", -1];
private _coef = 0.1;
for "_x" from 1 to 100 do
{
for "_y" from 1 to 100 do
{
private _random = 0 random [_x * _coef, _y * _coef];
private _dot = _display ctrlCreate ["RscBackground", -1];
_dot ctrlSetPosition [0.5 + pixelW * _x, 0.5 + pixelH * _y, pixelW, pixelH];
_dot ctrlSetBackgroundColor [_random, _random, _random, 1];
_dot ctrlCommit 0;
};
};
See also
selectRandom · selectRandomWeighted · Example Code: Random Area Distribution
Random selections including negative numbers can be obtained via:
_xRnd = round (random 200) - 100;
This will yield numbers between -100 and 100.
- Be careful using random numbers in multiplayer, each client will come up with a different result. See multiplayer tutorials for more general information about locality.
- The number returned is unlikely to be a whole number.
To return a whole number use either round, ceil or floor together with random
x = round (random 5)
x = floor (random 5)
x = ceil (random 5)
|
|
|
|
|
|
|
|
|
|
|
|
| + Repartition comparison |
Formula |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
sqf floor random 10
|
10% |
10% |
10% |
10% |
10% |
10% |
10% |
10% |
10% |
10% |
|
sqf floor random [0, 5, 10]
|
0% |
2% |
7% |
17% |
25% |
25% |
17% |
7% |
2% |
0% |
|
sqf floor random [0, 10, 0]
|
0% |
0% |
1% |
2% |
5% |
9% |
14% |
19% |
24% |
26% |
|
sqf floor random [0, 10, 5]
|
0% |
0% |
0% |
1% |
2% |
5% |
9% |
16% |
28% |
38% |
|