Difference between revisions of "random"
Jump to navigation
Jump to search
Lou Montana (talk  contribs) m (Use since template) 

(53 intermediate revisions by 22 users not shown)  
Line 1:  Line 1:  
−  +  {{CommandComments=  
−  +  ____________________________________________________________________________________________  
−  
−  
−  +   ofp Game name=  
−  +  1.00Game version=  
+  ____________________________________________________________________________________________  
+  [[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 the definition of [https://en.wikipedia.org/wiki/Normal_distribution Gaussian Distribution]<ref>Technically, it is a rescaled [https://en.wikipedia.org/wiki/Bates_distribution 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.</ref> params. Uses the same method as [[setTriggerTimeout]] command. Quite useful for spawning loot for example, making more valuable items more rare ('''Alternative Syntax 1''')<br /><br />  
+  Since Arma 3 v1.67.139663 two alternative syntaxes are available:  
+  * allowing to generate semirandom number based on provided seed ('''Alternative Syntax 2''')  
+  * generating pseudorandom [https://en.wikipedia.org/wiki/Perlin_noise noise texture] based on provided seed and returning a single number between 0 (included) and 1 (excluded) at supplied ''x'' and ''y'' coordinates ('''Alternative Syntax 3''') Description=  
+  ____________________________________________________________________________________________  
−  +   [[random]] x Syntax=  
−  +  p1= x: [[Number]] Parameter 1=  
−  +   [[Number]] Return value=  
+  ____________________________________________________________________________________________  
−  [[Number]]  +  s2= [[random]] [min, mid, max] {{sincearma31.55.133393y}} Syntax 2= 
+  p21= [min, mid, max]: [[Array]] Parameter 21=  
+  p22= min: [[Number]] Parameter 22=  
+  p23= mid: [[Number]] Parameter 23=  
+  p24= max: [[Number]] Parameter 24=  
+  r2= [[Number]]Return value 2=  
+  ____________________________________________________________________________________________  
−  +  s3= seed [[random]] x {{sincearma31.67.139663y}} Syntax 3=  
+  p41= seed: [[Number]] Parameter 41=  
+  p42= x: [[Number]] Parameter 42=  
+  r3= [[Number]]  value from 0 to x Return value 3=  
+  ____________________________________________________________________________________________  
−  +  s4= seed [[random]] [x, y] {{sincearma31.67.139663y}} Syntax 4=  
+  p61= seed: [[Number]] Parameter 61=  
+  p62= [x, y]: [[Array]] position on the [https://en.wikipedia.org/wiki/Perlin_noise Perlin noise texture] Parameter 62=  
+  p63= x: [[Number]] Parameter 63=  
+  p64= y: [[Number]] Parameter 64=  
+  r4= [[Number]]  value from 0 to 1 Return value 4=  
+  ____________________________________________________________________________________________  
+  
+  x1= <code>_rNumber = [[random]] 1;</code> Example 1=  
+  x2= <code>_rNumber = [[random]] 10;</code> Example 2=  
−  +  x3= Generate a random position inside a circle (see also [[Example Code: Random Area Distribution]])  
+  <code>_center [[getPos]] [<nowiki/>_radius * [[sqrt]] [[random]] 1, [[random]] 360];</code> Example 3=  
−  +  x4= To select random value from an array:  
+  <code>_array = ["apples", "pears", "bananas", "M16"];  
+  _random = _array [[select]] [[floor]] [[random]] [[count]] _array;  
+  {{cc{{sincearma31.55.133393}}}}  
+  _random = [[selectRandom]] _array;</code> Example 4=  
+  ____________________________________________________________________________________________  
+   [[Math Commands]], [[selectRandom]], [[selectRandomWeighted]] See also=  
+  }}  
−  +  <h3 style="display:none">Notes</h3>  
−  +  [[Category:Scripting Commands{{uc:{{PAGENAME}}}}]]  
+  [[Category:Scripting Commands OFP 1.46{{uc:{{PAGENAME}}}}]]  
+  [[Category:Scripting Commands OFP 1.96{{uc:{{PAGENAME}}}}]]  
+  [[Category:Scripting Commands OFP 1.99{{uc:{{PAGENAME}}}}]]  
+  [[Category:Scripting Commands ArmA{{uc:{{PAGENAME}}}}]]  
+  [[Category:Scripting Commands ArmA2{{uc:{{PAGENAME}}}}]]  
+  [[Category:Scripting Commands Arma 3{{uc:{{PAGENAME}}}}]]  
+  [[Category:Scripting_Commands_Take_On_Helicopters{{uc:{{PAGENAME}}}}]]  
+  [[Category:Command_Group:_Variables{{uc:{{PAGENAME}}}}]]  
−  +  <! CONTINUE Notes >  
+  <dl class="command_description">  
+  <dd class="notedate">Posted on July 12, 2015  20:32 (UTC)</dd>  
+  <dt class="note">[[User:HcpookieHcpookie]]</dt>  
+  <dd class="note">  
+  Random selections including negative numbers can be obtained via:  
−  +  <code>_Xrnd = round(random 200) 100;</code>  
−  The number returned is unlikely to be a whole number (  +  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]]:  
+  <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 = 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 class="notedate">Posted on July 22, 2018  12:58 (UTC+2)</dd>  
+  <dt class="note">[[User:Lou MontanaLou Montana]]</dt>  
+  <dd class="note">  
+  {{{!}}class="bikitable"  
+  {{!}}+ 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%  
+  {{!}}}  
+  </dd>  
+  </dl>  
+  <! DISCONTINUE Notes > 
Latest revision as of 23:24, 23 October 2019
Click on the images for descriptions
Introduced in
 Game:
 Operation Flashpoint
 Version:
 1.00
Description
 Description:
 Random real (floating point) value from 0 (inclusive) to x (not inclusive).
Since Arma 3 v1.55.133393 alternative syntax is added, allowing the definition of Gaussian Distribution^{[1]} params. Uses the same method as setTriggerTimeout command. Quite useful for spawning loot for example, making more valuable items more rare (Alternative Syntax 1)
Since Arma 3 v1.67.139663 two alternative syntaxes are available: allowing to generate semirandom number based on provided seed (Alternative Syntax 2)
 generating pseudorandom noise texture based on provided seed and returning a single number between 0 (included) and 1 (excluded) at supplied x and y coordinates (Alternative Syntax 3)
Syntax
Alternative Syntax
 Syntax:
 random [min, mid, max] Since Arma 3 v1.55.133393
 Parameters:
 [min, mid, max]: Array
 min: Number
 mid: Number
 max: Number
 Return Value:
 Number
Alternative Syntax 2
 Syntax:
 seed random x Since Arma 3 v1.67.139663
 Parameters:
 seed: Number
 x: Number
 Return Value:
 Number  value from 0 to x
Alternative Syntax 3
 Syntax:
 seed random [x, y] Since Arma 3 v1.67.139663
 Parameters:
 seed: Number
 [x, y]: Array position on the Perlin noise texture
 x: Number
 y: Number
 Return Value:
 Number  value from 0 to 1
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:
 To select random value from an array:
_array = ["apples", "pears", "bananas", "M16"]; _random = _array select floor random count _array; // since Arma 3 v1.55.133393 _random = selectRandom _array;
Additional Information
 Multiplayer:
 
 See also:
 Math CommandsselectRandomselectRandomWeighted
Notes
Only post proven facts here. Report bugs on the feedback tracker. Use the talk page or the forums for discussions.
Add New Note  How To
Add New Note  How To
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.
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.