Difference between revisions of "random"

From Bohemia Interactive Community
Jump to navigation Jump to search
m
(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

Template:Command

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)