# Difference between revisions of "Template:Rand"

Jump to navigation
Jump to search

Hallowizer (talk | contribs) (Prevent this from always returning one number on the same page) |
Hallowizer (talk | contribs) (Fix some 0's after a while) |
||

Line 1: | Line 1: | ||

− | {{#vardefine: randmult|{{#expr: {{#var: randmult}}+{{{3|67}}}}}}}{{Mod|((({{#time:U}}+({{{2|{{#time:z}}}}}))*({{#var: randmult}})+{{NUMBEROFARTICLES:R}})*({{#var: randmult}})+{{NUMBEROFUSERS:R}})*({{#var: randmult}})+{{NUMBEROFFILES:R}} | + | {{#vardefine: randmult|{{Mod|{{#expr: {{#var: randmult}}+{{{3|67}}}}}|91}}}}{{Mod|((({{#time:U}}+({{{2|{{#time:z}}}}}))*({{#var: randmult}})+{{NUMBEROFARTICLES:R}})*({{#var: randmult}})+{{NUMBEROFUSERS:R}})*({{#var: randmult}})+{{NUMBEROFFILES:R}} |

|{{{1|100}}}}}<noinclude> | |{{{1|100}}}}}<noinclude> | ||

{{pp-template|small=yes}} | {{pp-template|small=yes}} |

## Latest revision as of 04:22, 29 September 2021

76

[edit] Template documentation

This template generates a pseudo-random integer between 0 and *count*-1.

- Usage:

`{{Rand|`*count*`|`*seed*`|`*prime*`}}`- All parameters are optional and have default values. They must be integers.
- The default
*count*is 100 (so by default, this template generates values between 0 and 99) and must be non-zero. - The default
*seed*is {{#time:z}} and can be set to any other integer value (used to generate distinct values on the same page). - The default
*prime*is 67 and should be a prime number above 17 (used to generate distinct values on the same page).

- Examples generating numbers between 0 and 999:

`{{Rand|1000}}`= 720`{{Rand|1000|17|67}}`= 80 (same as above)`{{Rand|1000|17|61}}`= 670 (this and others should all be different)`{{Rand|1000|6}}`= 798`{{Rand|1000|5}}`= 270`{{Rand|1000|4}}`= 534`{{Rand|1000|3}}`= 830`{{Rand|1000|2}}`= 939`{{Rand|1000|1}}`= 488`{{Rand|1000|0}}`= 541`{{Rand|1000|1|17}}`= 190 (varying the prime number)`{{Rand|1000|1|19}}`= 577`{{Rand|1000|1|23}}`= 130`{{Rand|1000|1|29}}`= 230`{{Rand|1000|1|31}}`= 777`{{Rand|1000|1|37}}`= 326`{{Rand|1000|1|41}}`= 626`{{Rand|1000|1|43}}`= 467`{{Rand|1000|1|47}}`= 655`{{Rand|1000|1|51}}`= 326`{{Rand|1000|1|53}}`= 770`{{Rand|1000|1|59}}`= 327`{{Rand|1000|1|61}}`= 477`{{Rand|1000|1|67}}`= 85`{{Rand|1000|1|71}}`= 425`{{Rand|1000|1|73}}`= 606`{{Rand|1000|1|79}}`= 462

- Note:

- Varying
*seed*linearly generates numbers that generate a linear sequence on the same page, with equal cyclic steps; - Varying
*prime*(provided that they are odd prime numbers) generates pseudo-random that have independent random distribution. - Note that when
*count*is even (such as 100 by default, or 1000 in the examples above), the generated numbers (on the same page) are all odd or all even when you are varying the*seed*or*prime*, unless half of the calls use an even*seed*and the others used an odd*seed*. However, later invokations will still alternate odd and even numbers on output (this problem only occurs on the same page where multiple random numbers are invoked). - On the same page, multiple invokations of this template with the same parameters will generate the same ouput value, so it is possible to create multiple links related to the same article.