about summary refs log tree commit diff
path: root/Doc/Zsh/mod_random.yo
blob: 4f5622e6183622d1b4b1034381cb3b718ef20b29 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
COMMENT(!MOD!zsh/random
Some High-quality randomness parameters and functions.
!MOD!)
The tt(zsh/random) module gets random data from the kernel random pool. If no
kernel random pool can be found, the module will not load.

subsect(Parameters)

startitem()
vindex(SRANDOM)
item(tt(SRANDOM)) (
A random positive 32-bit integer between 0 and 4,294,967,295.  This parameter
is read-only. The name was chosen for compatibility with Bash and to
distinguish it from tt(RANDOM) which has a documented repeatable behavior.
)
enditem()

subsect(Math Functions)

startitem()
item(tt(zrand_float+LPAR()RPAR())) (
Returns a random floating point number between 0 and 1 inclusive.
)
enditem()

startitem()
item(tt(zrand_int)+LPAR()tt(upper), tt(lower), tt(inclusive)RPAR()) (
Returns a random integer between tt(lower) and tt(upper). All parameters are
optional.  If none are specified it is equivalent to
tt(SRANDOM).

tt(upper) is the upper bound on the resultant number and defaults to
4,294,967,295.

tt(lower) is the lower bound and defaults to 0.

The defaults of these two arguments are also the maximum and minimum to which
either can be set.

tt(inclusive) is a flag that controls whether the result is ever equal to
tt(upper).  By default it is not. If this argument is set to a non-zero value
then it may be.

This is to facilitate a construct like tt($a[zrand_int+LPAR()$#a+RPAR()+1]) rather
than tt($a[zrand_int+LPAR()$#a-1+RPAR()+1]).
For example, if $#a is 16, you would use tt(zrand_int+LPAR()16RPAR()) which has
16 possible return values 0-15.  Because the function can return zero, in order
to use it as an array index from 1-16 you need to add one.  It would
be an array index range error for it to also potentially return 16 ($#a). You
could, however, use the construct tt(zrand_int+LPAR()16,1,1+RPAR()) instead of
adding 1 to achieve the same result, but it is more verbose.

Most statistics algorithms seem to also expect 0 to tt(upper)-1, so this was
deemed the most commonly desired case and chosen as the default.
)
enditem()