2019-03-31 09:05:09 +00:00
|
|
|
.. _cmd-random:
|
|
|
|
|
2018-12-17 01:39:33 +00:00
|
|
|
random - generate random number
|
2019-01-03 04:10:47 +00:00
|
|
|
===============================
|
2018-12-17 01:39:33 +00:00
|
|
|
|
2018-12-18 01:58:24 +00:00
|
|
|
Synopsis
|
|
|
|
--------
|
2018-12-16 21:08:41 +00:00
|
|
|
|
2021-12-22 01:24:47 +00:00
|
|
|
| ``random``
|
|
|
|
| ``random`` *SEED*
|
|
|
|
| ``random`` *START* *END*
|
|
|
|
| ``random`` *START* *STEP* *END*
|
2022-01-09 08:49:51 +00:00
|
|
|
| ``random`` choice [*ITEMS* ...]
|
2018-12-16 21:08:41 +00:00
|
|
|
|
2018-12-19 02:44:30 +00:00
|
|
|
Description
|
2019-01-03 04:10:47 +00:00
|
|
|
-----------
|
2018-12-16 21:08:41 +00:00
|
|
|
|
2020-09-10 18:48:13 +00:00
|
|
|
``random`` generates a pseudo-random integer from a uniform distribution. The
|
|
|
|
range (inclusive) depends on the arguments.
|
|
|
|
No arguments indicate a range of 0 to 32767 (inclusive).
|
|
|
|
|
2018-12-16 21:08:41 +00:00
|
|
|
If one argument is specified, the internal engine will be seeded with the
|
2020-09-10 18:48:13 +00:00
|
|
|
argument for future invocations of ``random`` and no output will be produced.
|
|
|
|
|
|
|
|
Two arguments indicate a range from START to END (both START and END included).
|
|
|
|
|
|
|
|
Three arguments indicate a range from START to END with a spacing of STEP
|
2018-12-16 21:08:41 +00:00
|
|
|
between possible outputs.
|
2020-09-10 18:48:13 +00:00
|
|
|
``random choice`` will select one random item from the succeeding arguments.
|
2018-12-16 21:08:41 +00:00
|
|
|
|
|
|
|
Note that seeding the engine will NOT give the same result across different
|
|
|
|
systems.
|
|
|
|
|
2020-09-10 18:48:13 +00:00
|
|
|
You should not consider ``random`` cryptographically secure, or even
|
2018-12-16 21:08:41 +00:00
|
|
|
statistically accurate.
|
|
|
|
|
2018-12-19 02:44:30 +00:00
|
|
|
Example
|
2019-01-03 04:10:47 +00:00
|
|
|
-------
|
2018-12-16 21:08:41 +00:00
|
|
|
|
|
|
|
The following code will count down from a random even number between 10 and 20 to 1:
|
|
|
|
|
2018-12-19 03:14:04 +00:00
|
|
|
::
|
2020-09-10 18:48:13 +00:00
|
|
|
|
2018-12-19 03:14:04 +00:00
|
|
|
for i in (seq (random 10 2 20) -1 1)
|
|
|
|
echo $i
|
|
|
|
end
|
|
|
|
|
2018-12-16 21:08:41 +00:00
|
|
|
|
|
|
|
And this will open a random picture from any of the subdirectories:
|
|
|
|
|
2020-09-10 18:48:13 +00:00
|
|
|
::
|
|
|
|
|
|
|
|
open (random choice **.jpg)
|
2018-12-19 03:14:04 +00:00
|
|
|
|
|
|
|
|
2020-09-10 18:48:13 +00:00
|
|
|
Or, to only get even numbers from 2 to 20::
|
2018-12-19 03:14:04 +00:00
|
|
|
|
2020-09-10 18:48:13 +00:00
|
|
|
random 2 2 20
|
2018-12-19 03:14:04 +00:00
|
|
|
|
2020-09-10 18:48:13 +00:00
|
|
|
Or odd numbers from 1 to 3::
|
|
|
|
|
|
|
|
random 1 2 3 # or 1 2 4
|