Difference between revisions of "random"
Jump to navigation
Jump to search
m 
Killzone Kid (talk  contribs) (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.jpgright200px]] 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  
____________________________________________________________________________________________  ____________________________________________________________________________________________  
−    +  '''random''' x = Syntax 
p1= x: [[Number]]  p1= x: [[Number]]  
 [[Number]] = Return value   [[Number]] = Return value  
+  
+  s2= '''random''' [min, mid, max] ''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>  
−  
−  
−  
−  
−  
−  
−  
−  
−  
−  
−  
−  
[[Category:Scripting CommandsRANDOM]]  [[Category:Scripting CommandsRANDOM]]  
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. (nonuniform 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
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=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)