random: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
mNo edit summary
(alt syntax, joined notes. If anyone wishes to separate them again and fix broken note, be my guest)
Line 7: Line 7:
____________________________________________________________________________________________
____________________________________________________________________________________________


| Random real (floating point) value from 0 (inclusive) to x (not inclusive). |= Description
|[[Image:bellcurve.jpg|right|200px]] Random real (floating point) value from 0 (inclusive) to x (not inclusive).<br><br>
Since Arma 3 v1.55.133393 alternative syntax is added, allowing to define [https://en.wikipedia.org/wiki/Normal_distribution Gaussian Distribution] params. Uses the same method as [[setTriggerTimeout]] command. Quite useful for spawning loot for example, making more valueable items more rare. |= Description
____________________________________________________________________________________________
____________________________________________________________________________________________


| [[Number]] <nowiki>=</nowiki> '''random''' x |= Syntax
|'''random''' x |= Syntax


|p1= x: [[Number]]
|p1= x: [[Number]]


| [[Number]] |= Return value
| [[Number]] |= Return value
|s2= '''random''' [min, mid, max] &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;''Since Arma 3 v1.55.133393''|= Syntax
|p21=  [min, mid, max]: [[Array]] |=
|p22= min: [[Number]] |=
|p23= med: [[Number]] |=
|p24= max: [[Number]] |=
| r2= [[Number]] |= Return value
____________________________________________________________________________________________
____________________________________________________________________________________________
   
   
Line 24: Line 34:
<code>_array = ["apples", "pears", "bananas", "M16"];
<code>_array = ["apples", "pears", "bananas", "M16"];
_random = _array [[select]] [[floor]] [[random]] [[count]] _array;</code>  |= Example 3
_random = _array [[select]] [[floor]] [[random]] [[count]] _array;</code>  |= Example 3
|x4= Compare (each command was executed 100000 times to gather statistics):<code>[[floor]] [[random]] 10;
// 0 - 10099 (10%)
// 1 - 10040 (10%)
// 2 - 10154 (10%)
// 3 - 9910 (10%)
// 4 - 10023 (10%)
// 5 - 9937 (10%)
// 6 - 10118 (10%)
// 7 - 9716 (10%)
// 8 - 9986 (10%)
// 9 - 10017 (10%)
[[floor]] [[random]] [0,5,10];
// 0 - 109 (0%)
// 1 - 1604 (2%)
// 2 - 6839 (7%)
// 3 - 16671 (17%)
// 4 - 24706 (25%)
// 5 - 24702 (25%)
// 6 - 16626 (17%)
// 7 - 6925 (7%)
// 8 - 1702 (2%)
// 9 - 116 (0%)
[[floor]] [[random]] [0,10,10];
// 0 - 9 (0%)
// 1 - 94 (0%)
// 2 - 420 (0%)
// 3 - 1197 (1%)
// 4 - 2361 (2%)
// 5 - 4447 (4%)
// 6 - 7082 (7%)
// 7 - 9512 (10%)
// 8 - 11889 (12%)
// 9 - 13093 (13%)
// 10 - 49896 (50%)
[[floor]] [[random]] [0,10,5];
// 0 - 11 (0%)
// 1 - 98 (0%)
// 2 - 430 (0%)
// 3 - 1149 (1%)
// 4 - 2384 (2%)
// 5 - 4546 (5%)
// 6 - 8612 (9%)
// 7 - 16283 (16%)
// 8 - 28393 (28%)
// 9 - 38094 (38%)</code>  |= Example 2
____________________________________________________________________________________________
____________________________________________________________________________________________


| [[Math Commands]] |= See also
| [[Math Commands]], [[selectRandom]] |= See also


}}
}}


<h3 style="display:none">Notes</h3>
<h3 style="display:none">Notes</h3>
<dl class="command_description">
<!-- Note Section BEGIN -->
* 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.<br>To return a whole number use either '''[[round]]''', '''[[ceil]]''' or '''[[floor]]''' together with '''random''':<br>
x=round(random 5) will return 0,1,2,3,4 or 5. (non-uniform distribution, 0 and 5 are half as likely to be selected than any of the other numbers)
<br>x=floor(random 5) will return 0,1,2,3 or 4.  (uniform distribution, all numbers have the same probability of being selected)
<br>x=ceil(random 5) will return  0,1,2,3,4 or 5. (0 is very unlikely, but possible, as ceil 0 is 0)
<!-- Note Section END -->
</dl>
<h3 style="display:none">Bottom Section</h3>


[[Category:Scripting Commands|RANDOM]]
[[Category:Scripting Commands|RANDOM]]
Line 64: Line 111:


This will yield numbers between -100 and 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.<br>To return a whole number use either '''[[round]]''', '''[[ceil]]''' or '''[[floor]]''' together with '''random''':<br>
x=round(random 5) will return 0,1,2,3,4 or 5. (non-uniform distribution, 0 and 5 are half as likely to be selected than any of the other numbers)
<br>x=floor(random 5) will return 0,1,2,3 or 4.  (uniform distribution, all numbers have the same probability of being selected)
<br>x=ceil(random 5) will return  0,1,2,3,4 or 5. (0 is very unlikely, but possible, as ceil 0 is 0)
</dd>
</dd>
</dl>
</dl>
<!-- DISCONTINUE Notes -->
<!-- DISCONTINUE Notes -->

Revision as of 00:51, 17 November 2015

Hover & click on the images for description

Description

Description:
bellcurve.jpg
Random real (floating point) value from 0 (inclusive) to x (not inclusive).

Since Arma 3 v1.55.133393 alternative syntax is added, allowing to define Gaussian Distribution params. Uses the same method as setTriggerTimeout command. Quite useful for spawning loot for example, making more valueable items more rare.
Groups:
Uncategorised

Syntax

Syntax:
random x
Parameters:
x: Number
Return Value:
Number

Alternative Syntax

Syntax:
random [min, mid, max]        Since Arma 3 v1.55.133393
Parameters:
[min, mid, max]: Array
min: Number
med: Number
max: Number
Return Value:
Number

Examples

Example 1:
_rNumber = random 1;
Example 2:
_rNumber = random -10;
Example 3:
To select random value from an array: _array = ["apples", "pears", "bananas", "M16"]; _random = _array select floor random count _array;
Example 4:
Compare (each command was executed 100000 times to gather statistics):floor random 10; // 0 - 10099 (10%) // 1 - 10040 (10%) // 2 - 10154 (10%) // 3 - 9910 (10%) // 4 - 10023 (10%) // 5 - 9937 (10%) // 6 - 10118 (10%) // 7 - 9716 (10%) // 8 - 9986 (10%) // 9 - 10017 (10%) floor random [0,5,10]; // 0 - 109 (0%) // 1 - 1604 (2%) // 2 - 6839 (7%) // 3 - 16671 (17%) // 4 - 24706 (25%) // 5 - 24702 (25%) // 6 - 16626 (17%) // 7 - 6925 (7%) // 8 - 1702 (2%) // 9 - 116 (0%) floor random [0,10,10]; // 0 - 9 (0%) // 1 - 94 (0%) // 2 - 420 (0%) // 3 - 1197 (1%) // 4 - 2361 (2%) // 5 - 4447 (4%) // 6 - 7082 (7%) // 7 - 9512 (10%) // 8 - 11889 (12%) // 9 - 13093 (13%) // 10 - 49896 (50%) floor random [0,10,5]; // 0 - 11 (0%) // 1 - 98 (0%) // 2 - 430 (0%) // 3 - 1149 (1%) // 4 - 2384 (2%) // 5 - 4546 (5%) // 6 - 8612 (9%) // 7 - 16283 (16%) // 8 - 28393 (28%) // 9 - 38094 (38%)

Additional Information

See also:
Math CommandsselectRandom

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note

Notes

Posted on July 12, 2015 - 20:32 (UTC)
Hcpookie
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) will return 0,1,2,3,4 or 5. (non-uniform distribution, 0 and 5 are half as likely to be selected than any of the other numbers)
x=floor(random 5) will return 0,1,2,3 or 4. (uniform distribution, all numbers have the same probability of being selected)
x=ceil(random 5) will return 0,1,2,3,4 or 5. (0 is very unlikely, but possible, as ceil 0 is 0)