Difference between revisions of "random"
Jump to navigation
Jump to search
Lou Montana (talk  contribs) (Fix description) 
Lou Montana (talk  contribs) 

(9 intermediate revisions by the same user not shown)  
Line 14:  Line 14:  
game5= arma2oa  game5= arma2oa  
−  version5= 1.  +  version5= 1.50 
game6= tkoh  game6= tkoh  
Line 24:  Line 24:  
gr1= Math  gr1= Math  
−  descr= [[Image:bellcurve.jpg  +  descr= [[Image:bellcurve.jpgthumb120px[[#Syntax 2Syntax 2]]'s distribution]] 
−  {{  +  {{{!}} 
−  {{  +  ! style="paddingright: 1em; verticalalign: top; whitespace: nowrap" {{!}} {{HashLink#Syntax 1}} 
−  +  {{!}} generates a random floating point value  
−  +  {{!}}  
+  ! style="paddingright: 1em; verticalalign: top; whitespace: nowrap" {{!}} {{HashLink#Syntax 2}}  
+  {{!}} generates a {{WikipediaNormal_distributionGaussian Distribution}}<ref>Technically, it is a rescaled {{WikipediaBates distribution}} with n = 4. The distribution is split in two at its midpoint and scaled linearly such that its maximum lies at the specified midpoint.</ref>. It uses the same method as [[setTriggerTimeout]] command and is quite useful for e.g spawning loot, making more valuable items more rare  
+  {{!}}  
+  ! style="paddingright: 1em; verticalalign: top; whitespace: nowrap" {{!}} {{HashLink#Syntax 3}}  
+  {{!}} generates a {{WikipediaRandom seedseedbased}} random number  
+  {{!}}  
+  ! style="paddingright: 1em; verticalalign: top; whitespace: nowrap" {{!}} {{HashLink#Syntax 4}}  
+  {{!}} generates a {{WikipediaRandom seedseedbased}} random noise ('''not''' Perlin) texture based on provided seed and returning the value at supplied coordinates  
+  {{!}}}  
s1= [[random]] x  s1= [[random]] x  
Line 34:  Line 43:  
p1= x: [[Number]]  p1= x: [[Number]]  
−  r1= [[Number]]  +  r1= [[Number]] from 0 (included) to ''x'' (excluded) 
−  s2= [[random]] [min, mid, max]  +  s2= [[random]] [min, mid, max] 
−    +  s2since= arma3 1.56 
−    +  p21= min: [[Number]] 
−    +  p22= mid: [[Number]] 
−    +  p23= max: [[Number]] 
−  r2= [[Number]]  +  r2= [[Number]] in range from ''min'' to ''max'', weighted by ''mid'' 
−  s3= seed [[random]] x  +  s3= seed [[random]] x 
−  p41= seed: [[Number]]  +  s3since= arma3 1.68 
+  
+  p41= 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''')  
p42= x: [[Number]]  p42= x: [[Number]]  
−  r3= [[Number]]  +  r3= [[Number]] from 0 (included) to ''x'' (excluded) 
−  s4= seed [[random]] [x, y]  +  s4= seed [[random]] [x, y] 
+  
+  s4since= arma3 1.68  
p61= seed: [[Number]]  p61= seed: [[Number]]  
−  p62=  +  p62= x: [[Number]]  x texture position 
−  p63=  +  p63= y: [[Number]]  y texture position 
−    +  r4= [[Number]] from 0 (included) to 1 (excluded) 
−  
−  
x1= <code>_rNumber = [[random]] 1;</code>  x1= <code>_rNumber = [[random]] 1;</code>  
Line 73:  Line 84:  
x3= Generate a random position inside a circle (see also [[Example Code: Random Area Distribution]])  x3= Generate a random position inside a circle (see also [[Example Code: Random Area Distribution]])  
−  <code>_center [[getPos]] [  +  <code>_center [[getPos]] [_radius * [[sqrt]] [[random]] 1, [[random]] 360];</code> 
−  x4=  +  x4= Select a random value from an array: 
<code>_array = ["apples", "pears", "bananas", "M16"];  <code>_array = ["apples", "pears", "bananas", "M16"];  
−  
−  
−  
−  seealso= [[selectRandom]]  +  _random = _array [[select]] [[floor]] [[random]] [[count]] _array; {{ccBefore {{arma2}}}} 
+  _random = _array [[call]] [[BIS_fnc_selectRandom]]; {{ccSince {{arma2}}}}  
+  _random = [[selectRandom]] _array; {{ccSince {{arma3}} v1.56}}</code>  
+  
+  seealso= [[selectRandom]] [[selectRandomWeighted]]  
}}  }}  
<dl class="command_description">  <dl class="command_description">  
+  
<dt></dt>  <dt></dt>  
<dd class="notedate">Posted on July 12, 2015  20:32 (UTC)</dd>  <dd class="notedate">Posted on July 12, 2015  20:32 (UTC)</dd>  
Line 96:  Line 109:  
* The number returned is unlikely to be a whole number.<br>  * 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]]:  To return a whole number use either '''[[round]]''', '''[[ceil]]''' or '''[[floor]]''' together with [[random]]:  
−  <code>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)  +  <code>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) 
−  x = floor(random 5) will return 0,1,2,3 or 4. (uniform distribution, all numbers have the same probability of being selected)  +  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  +  x = [[ceil]] ([[random]] 5) will return 0, 1, 2, 3, 4 or 5. (0 is very unlikely, but possible, as ceil 0 is 0)</code> 
</dd>  </dd>  
Line 167:  Line 180:  
}  }  
</dd>  </dd>  
+  
</dl>  </dl> 
Latest revision as of 17:26, 20 January 2022
Description
 Description:

Syntax 1 generates a random floating point value Syntax 2 generates a Gaussian Distribution^{[1]}. It uses the same method as setTriggerTimeout command and is quite useful for e.g spawning loot, making more valuable items more rare Syntax 3 generates a seedbased random number Syntax 4 generates a seedbased random noise (not Perlin) texture based on provided seed and returning the value at supplied coordinates  Groups:
 Math
Syntax 1
Syntax 2
 Syntax:
 random [min, mid, max]
 Parameters:
 min: Number
 mid: Number
 max: Number
 Return Value:
 Number in range from min to max, weighted by mid
Syntax 3
 Syntax:
 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
 Return Value:
 Number from 0 (included) to x (excluded)
Syntax 4
 Syntax:
 seed random [x, y]
 Parameters:
 seed: Number
 x: Number  x texture position
 y: Number  y texture position
 Return Value:
 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; // Before Arma 2 _random = _array call BIS_fnc_selectRandom; // Since Arma 2 _random = selectRandom _array; // Since Arma 3 v1.56
Additional Information
 See also:
 selectRandom selectRandomWeighted
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
 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.
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) 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)
 Posted on July 22, 2018  12:58 (UTC+2)
 Lou Montana

Repartition comparison Formula 0 1 2 3 4 5 6 7 8 9 floor random 10; 10% 10% 10% 10% 10% 10% 10% 10% 10% 10% floor random [0, 5, 10] 0% 2% 7% 17% 25% 25% 17% 7% 2% 0% floor random [0, 10, 0] 0% 0% 1% 2% 5% 9% 14% 19% 24% 26% floor random [0, 10, 5] 0% 0% 0% 1% 2% 5% 9% 16% 28% 38%
 ↑ Technically, it is a rescaled Bates distribution with n = 4. The distribution is split in two at its midpoint and scaled linearly such that its maximum lies at the specified midpoint.
Categories:
 Scripting Commands
 Introduced with Operation Flashpoint version 1.00
 Operation Flashpoint: New Scripting Commands
 Operation Flashpoint: Scripting Commands
 Operation Flashpoint: Elite: Scripting Commands
 ArmA: Armed Assault: Scripting Commands
 Arma 2: Scripting Commands
 Arma 2: Operation Arrowhead: Scripting Commands
 Take On Helicopters: Scripting Commands
 Arma 3: Scripting Commands
 Command Group: Math