Roll: Difference between revisions
m (Text replacement - "{{APL built-ins}}" to "{{APL built-ins}}Category:Primitive functions") |
m (Text replacement - "Category:Primitive functions" to "Category:Primitive functionsCategory:Scalar monadic functions") |
||
Line 40: | Line 40: | ||
* [https://www.jsoftware.com/help/dictionary/d640.htm J Dictionary], [https://code.jsoftware.com/wiki/Vocabulary/query J NuVoc] | * [https://www.jsoftware.com/help/dictionary/d640.htm J Dictionary], [https://code.jsoftware.com/wiki/Vocabulary/query J NuVoc] | ||
{{APL built-ins}}[[Category:Primitive functions]] | {{APL built-ins}}[[Category:Primitive functions]][[Category:Scalar monadic functions]] |
Revision as of 10:10, 4 May 2020
?
|
Roll (?
) is a monadic scalar function which returns random or pseudo-random numbers. The name Roll comes from the analogy of rolling dice. Each scalar in the argument must be a positive integer, n
, and Roll chooses one of the first n
indices. Some dialects allow n
to be zero, in which case Roll chooses a floating-point number between 0 and 1.
Examples
? 4 ⍴ 6 ⍝ Roll four six-sided dice 1 4 1 1 ? 3 2 1 0 ⍝ The result for 1 is always 1 2 2 1 0.9637543707 {⍵[?8⍴≢⍵]} 'Hello' ⍝ Choose 8 random letters eeHHHolo
Description
Each scalar in the argument to Roll must be a positive integer.
The result of Roll on each number n
is either
- One of the elements of
⍳n
chosen uniformly at random; or - A real number between 0 and 1 chosen uniformly at random, if
n
is 0 and the dialect has this extension.
Because Iota depends on index origin, Roll depends on index origin unless every number in the argument is 0.
The choices made by Roll do not have to be truly random: they may be pseudorandom (generated by a deterministic but difficult to predict algorithm) or taken from the operating system. They way random numbers are generated is controlled by the random link ⎕RL
.
External links
Lessons
- Jupyter Notebook (Run on TryAPL)