Module:Random/doc: Difference between revisions

Content deleted Content added
add documentation for the date function, and update the number function
 
(18 intermediate revisions by 8 users not shown)
Line 1:
{{high-use}}
{{module rating|alphaprotected}}
 
{{Lua|Module:List|Module:Yesno}}
This module contains a number of functions that use random numbers. It can output random numbers, select a random item from a list, and reorder lists randomly. The randomly reordered lists can be output inline, or as various types of ordered and unordered lists. The available functions are outlined in more detail below.
 
Line 7 ⟶ 8:
The <code>number</code> function outputs a random number.
 
&#123;{#invoke:random|number|''m''|''n''|same=''yes''}}
 
The arguments <code>m</code> and <code>n</code> may be omitted, but if specified must be convertible to integers.
* With no arguments, returns a real number in the range <math>[0,1)</math>.
* With one argument, returns an integer in the range <math>[1,m]</math>, or, if <code>''m''</code> is negative, <math>(-m,0]</math>. If <code>''m''</code> mustis beequal positiveto 0 or 1, returns 1 (or 0 if <math>m=-1</math>).
* With two arguments, returns an integer in the range <math>[m,n]</math>. <code>''m''</code> and <code>''n''</code> can be either positive or negative. If <code>''m''</code> is greater than <code>''n''</code>, returns an integer in the range <math>[n,m]</math> instead.
* If the {{para|same}} parameter is set to "yes", "y", "true", or "1", the same random number is returned for each module call on a given page.
 
'''Examples''' <small>({{purge|refresh|anchor=Number}})</small>
 
* <code><nowikisyntaxhighlight lang="wikitext" inline>{{#invoke:random|number}}</nowiki></codesyntaxhighlight> &rarr; {{#invoke:random|number}}
* <code><nowikisyntaxhighlight lang="wikitext" inline>{{#invoke:random|number|100}}</nowiki></codesyntaxhighlight> &rarr; {{#invoke:random|number|100}}
* <code><nowikisyntaxhighlight lang="wikitext" inline>{{#invoke:random|number|-100|-50}}</nowiki></codesyntaxhighlight> &rarr; {{#invoke:random|number|-100|-50}}
* <syntaxhighlight lang="wikitext" inline>{{#invoke:random|number|100|same=yes}}</syntaxhighlight> &rarr; {{#invoke:random|number|100|same=yes}}
* <syntaxhighlight lang="wikitext" inline>{{#invoke:random|number|100|same=yes}}</syntaxhighlight> &rarr; {{#invoke:random|number|100|same=yes}}
 
<small>The documentation for this function is partly taken from the [[mw:Extension:Scribunto/Lua reference manual#math.random|Scribunto Lua reference manual]], which is in turn based on the [http://www.lua.org/manual/5.1/index.html Lua 5.1 Reference Manual], available under the [[MIT License]].</small>
Line 26 ⟶ 30:
The <code>date</code> function outputs a random date.
 
&#123;{#invoke:random|numberdate|''timestamp1''|''timestamp2''|format=''date format''|same=''yes''}}
 
* If no timestamp arguments are specified, the module outputs a random date in the current year.
Line 33 ⟶ 37:
* Formatting can be specified with the {{para|format}} parameter. The default formatting is "hh:mm, DD Month YYYY (UTC)" (the same as the default Wikipedia timestamp).
* The timestamps and the {{para|format}} parameter accept values compatible with the [[mw:Help:Extension:ParserFunctions##time|#time parser function]]. Please see the #time documentation for the full range of possible input values and formatting options.
* If the {{para|same}} parameter is set to "yes", "y", "true", or "1", the same date is returned for each module call on a given page.
 
'''Examples''' <small>({{purge|refresh|anchor=Date}})</small>
 
* <code><nowikisyntaxhighlight lang="wikitext" inline>{{#invoke:random|date}}</nowiki></codesyntaxhighlight> &rarr; {{#invoke:random|date}}
* <code><nowikisyntaxhighlight lang="wikitext" inline>{{#invoke:random|date|1format=F Jan 1980|31 Dec 1999j}}</nowiki></codesyntaxhighlight> &rarr; {{#invoke:random|date|1 Jan 1980|31 Decformat=F 1999j}}
* <code><nowikisyntaxhighlight lang="wikitext" inline>{{#invoke:random|date|1st1 JanuaryJan 15001980|1st31 JanuaryDec 3000|format=g:i a, l d M Y1999}}</nowiki></codesyntaxhighlight> &rarr; {{#invoke:random|date|1st1 JanuaryJan 15001980|1st January 3000|format=g:i a, l d31 MDec Y1999}}
* <code><nowikisyntaxhighlight lang="wikitext" inline>{{#invoke:random|date|1970/06/011st January 1500|1st January 3000|format=g:i a, l d M Y}}</nowiki></codesyntaxhighlight> &rarr; {{#invoke:random|date|1970/06/011st January 1500|1st January 3000|format=g:i a, l d M Y}}
* <syntaxhighlight lang="wikitext" inline>{{#invoke:random|date|1970/06/01}}</syntaxhighlight> &rarr; {{#invoke:random|date|1970/06/01}}
* <syntaxhighlight lang="wikitext" inline>{{#invoke:random|date|same=yes}}</syntaxhighlight> &rarr; {{#invoke:random|date|same=yes}}
* <syntaxhighlight lang="wikitext" inline>{{#invoke:random|date|same=yes}}</syntaxhighlight> &rarr; {{#invoke:random|date|same=yes}}
 
== Item ==
Line 45 ⟶ 53:
The <code>item</code> function outputs a random item from a list.
 
&#123;{#invoke:random|item|''list item 1''|''list item 2''|''list item 3''|...|same=''yes''}}
 
If the {{para|same}} parameter is set to "yes", "y", "true", or "1", the same item is returned for each module call on a given page.
 
'''Example''' <small>({{purge|refresh|anchor=Item}})</small>
 
* <code><nowikisyntaxhighlight lang="wikitext" inline>{{#invoke:random|item|egg|beans|sausage|bacon|spam}}</nowiki></codesyntaxhighlight> &rarr; {{#invoke:random|item|egg|beans|sausage|bacon|spam}}
* <syntaxhighlight lang="wikitext" inline>{{#invoke:random|item|egg|beans|sausage|bacon|spam|same=yes}}</syntaxhighlight> &rarr; {{#invoke:random|item|egg|beans|sausage|bacon|spam|same=yes}}
* <syntaxhighlight lang="wikitext" inline>{{#invoke:random|item|egg|beans|sausage|bacon|spam|same=yes}}</syntaxhighlight> &rarr; {{#invoke:random|item|egg|beans|sausage|bacon|spam|same=yes}}
 
Setting "same" will make the template select the same number item from each list, even if the things in them are different.
== List ==
 
* <syntaxhighlight lang="wikitext">My
The <code>list</code> function outputs a list in a random order, with an optional separator.
{{#invoke:random|item|egg |bean |sausage |bacon |spam |same=yes}}
is
{{#invoke:random|item|quail |pinto |kielbasa |canadian |spammy|same=yes}}
and my
{{#invoke:random|item|blegg |blean |blausage |blacon |blam |same=yes}}
is
{{#invoke:random|item|blail |blinto|blielbasa|blanadian|blammy|same=yes}}</syntaxhighlight>
 
&rarr; My {{#invoke:random|item|egg |bean |sausage |bacon |spam |same=yes}}
is {{#invoke:random|item|quail |pinto |kielbasa |canadian |spammy|same=yes}} and my
{{#invoke:random|item|blegg |blean |blausage |blacon |blam |same=yes}} is {{#invoke:random|item|blail |blinto|blielbasa|blanadian|blammy|same=yes}}.
 
== List ==
 
The <code>list</code> function outputs a list in a random order, with an optional separator.
&#123;{#invoke:random|item|''list item 1''|''list item 2''|''list item 3''|...|sep=''separator''}}
 
&#123;{#invoke:random|itemlist|''list item 1''|''list item 2''|''list item 3''|...|sep=''separator''|limit=''number of items to display''|same=''yes''}}
The separator can be specified with either the {{para|sep}} or {{para|separator}} parameters.
 
'''Named parameters'''
Possible separator values:
* {{para|sep}} or {{para|separator}} - an optional separator for the list items. Some values are special; see the table below.
* {{para|limit}} - the maximum number of list items to display. The lowest possible is 0 and the highest possible is the length of the list.
* {{para|same}} - if this is set to "yes", "y", "true", or "1", the list order is the same for each module call on a given page.
 
{| class="wikitable"
|+ Possible separator values:
|-
! Code !! Output
Line 75 ⟶ 104:
|-
| <code>space</code> || ''a space''
|-
| <code>newline</code> || ''a newline character''
|-
| ''any other value'' || ''other values are used without modification''
Line 83 ⟶ 114:
'''Examples''' <small>({{purge|refresh|anchor=List}})</small>
 
* <code><nowikisyntaxhighlight lang="wikitext" inline>{{#invoke:random|list|egg|beans|sausage|bacon|spam}}</nowiki></codesyntaxhighlight> &rarr; {{#invoke:random|list|egg|beans|sausage|bacon|spam}}
* <code><nowikisyntaxhighlight lang="wikitext" inline>{{#invoke:random|list|egg|beans|sausage|bacon|spam|sep=dot}}</nowiki></codesyntaxhighlight> &rarr; {{#invoke:random|list|egg|beans|sausage|bacon|spam|sep=dot}}
* <code><nowikisyntaxhighlight lang="wikitext" inline>{{#invoke:random|list|egg|beans|sausage|bacon|spam|sep=space}}</nowiki></codesyntaxhighlight> &rarr; {{#invoke:random|list|egg|beans|sausage|bacon|spam|sep=space}}
* <code><nowikisyntaxhighlight lang="wikitext" inline>{{#invoke:random|list|egg|beans|sausage|bacon|spam|sep=;&amp;#32;}}</nowiki></codesyntaxhighlight> &rarr; {{#invoke:random|list|egg|beans|sausage|bacon|spam|sep=;&#32;}}
* <code><nowikisyntaxhighlight lang="wikitext" inline>{{#invoke:random|list|egg|beans|sausage|bacon|spam|sep=foo}}</nowiki></codesyntaxhighlight> &rarr; {{#invoke:random|list|egg|beans|sausage|bacon|spam|sep=foo}}
* <syntaxhighlight lang="wikitext" inline>{{#invoke:random|list|egg|beans|sausage|bacon|spam|limit=3}}</syntaxhighlight> &rarr; {{#invoke:random|list|egg|beans|sausage|bacon|spam|limit=3}}
* <syntaxhighlight lang="wikitext" inline>{{#invoke:random|list|egg|beans|sausage|bacon|spam|same=yes}}</syntaxhighlight> &rarr; {{#invoke:random|list|egg|beans|sausage|bacon|spam|same=yes}}
* <syntaxhighlight lang="wikitext" inline>{{#invoke:random|list|egg|beans|sausage|bacon|spam|same=yes}}</syntaxhighlight> &rarr; {{#invoke:random|list|egg|beans|sausage|bacon|spam|same=yes}}
 
== Text list ==
Line 93 ⟶ 127:
The <code>text_list</code> function outputs a list in a random order, text-style. In other words, it is like the <code>list</code> function, but with a different separator before the last item.
 
&#123;{#invoke:random|itemtext_list|''list item 1''|''list item 2''|''list item 3''|...|sep=''separator''|conj=''conjunction''|limit=''number of items to display''|same=''yes''}}
 
The separator can be specified with either the {{para|sep}} or {{para|separator}} parameters; its default value is "{{int:comma-separator}}". The conjunction can be specified with either the {{para|conj}} or {{para|conjunction}} parameters; its default value is " and ". The separator and the conjunction can be specified with the same values as the separator in the [[#List|list function]].
 
The maximum number of list items to display can be set with the {{para|limit}} parameter. The lowest possible is 0 and the highest possible is the length of the list.
 
If the {{para|same}} parameter is set to "yes", "y", "true", or "1", the list order is the same for each module call on a given page.
 
'''Examples''' <small>({{purge|refresh|anchor=Text list}})</small>
 
* <code><nowikisyntaxhighlight lang="wikitext" inline>{{#invoke:random|text_list|egg|beans|sausage|bacon|spam}}</nowiki></codesyntaxhighlight> &rarr; {{#invoke:random|text_list|egg|beans|sausage|bacon|spam}}
* <code><nowikisyntaxhighlight lang="wikitext" inline>{{#invoke:random|text_list|egg|beans|sausage|bacon|spam|sep=;&amp;#32;}}</nowiki></codesyntaxhighlight> &rarr; {{#invoke:random|text_list|egg|beans|sausage|bacon|spam|sep=;&#32;}}
* <code><nowikisyntaxhighlight lang="wikitext" inline>{{#invoke:random|text_list|egg|beans|sausage|bacon|spam|sep=;&amp;#32;|conj=&amp;#32;or&amp;#32;}}</nowiki></codesyntaxhighlight> &rarr; {{#invoke:random|text_list|egg|beans|sausage|bacon|spam|sep=;&#32;|conj=&#32;or&#32;}}
* <syntaxhighlight lang="wikitext" inline>{{#invoke:random|text_list|egg|beans|sausage|bacon|spam|limit=3}}</syntaxhighlight> &rarr; {{#invoke:random|text_list|egg|beans|sausage|bacon|spam|limit=3}}
* <syntaxhighlight lang="wikitext" inline>{{#invoke:random|text_list|egg|beans|sausage|bacon|spam|same=yes}}</syntaxhighlight> &rarr; {{#invoke:random|text_list|egg|beans|sausage|bacon|spam|same=yes}}
* <syntaxhighlight lang="wikitext" inline>{{#invoke:random|text_list|egg|beans|sausage|bacon|spam|same=yes}}</syntaxhighlight> &rarr; {{#invoke:random|text_list|egg|beans|sausage|bacon|spam|same=yes}}
 
== HTML lists ==
Line 116 ⟶ 157:
| <code>bulleted_list</code>
| Bulleted lists
| <code><nowikisyntaxhighlight lang="wikitext" inline>{{#invoke:random|bulleted_list|egg|sausage|spam}}</nowiki></codesyntaxhighlight>
| {{#invoke:random|bulleted_list|egg|sausage|spam}}
|-
| <code>unbulleted_list</code>
| Unbulleted lists
| <code><nowikisyntaxhighlight lang="wikitext" inline>{{#invoke:random|unbulleted_list|egg|sausage|spam}}</nowiki></codesyntaxhighlight>
| {{#invoke:random|unbulleted_list|egg|sausage|spam}}
|-
| <code>horizontal_list</code>
| Horizontal bulleted lists
| <code><nowikisyntaxhighlight lang="wikitext" inline>{{#invoke:random|horizontal_list|egg|sausage|spam}}</nowiki></codesyntaxhighlight>
| {{#invoke:random|horizontal_list|egg|sausage|spam}}
|-
| <code>ordered_list</code>
| Ordered lists (numbered lists and alphabetical lists)
| <code><nowikisyntaxhighlight lang="wikitext" inline>{{#invoke:random|ordered_list|egg|sausage|spam}}</nowiki></codesyntaxhighlight>
| {{#invoke:random|ordered_list|egg|sausage|spam}}
|-
| <code>horizontal_ordered_list</code>
| Horizontal ordered lists
| <code><nowikisyntaxhighlight lang="wikitext" inline>{{#invoke:random|horizontal_ordered_list|egg|sausage|spam}}</nowiki></codesyntaxhighlight>
| {{#invoke:random|horizontal_ordered_list|egg|sausage|spam}}
|}
Line 142 ⟶ 183:
; Basic usage
 
&#123;{#invoke:random|''function''|''list item 1''|''list item 2''|''list item 3''|...|limit=''number of items to display''|same=''yes''}}
 
; All parameters
 
{{pre2pre|
<nowiki>{{</nowiki>#invoke:random<nowiki>|</nowiki>''function''
<nowiki>|</nowiki>''first item''<nowiki>|</nowiki>''second item''<nowiki>|</nowiki>''third item''<nowiki>|</nowiki>...
<nowiki>|start = </nowiki>''start number for ordered lists''
<nowiki>|markertype = </nowiki>''type of marker for ordered lists''
<nowiki>|list_style_type = </nowiki>''type of marker for ordered lists (uses CSS)''
<nowiki>|class = </nowiki>''class''
Line 161 ⟶ 202:
}}
 
The maximum number of list items to display can be set with the {{para|limit}} parameter. The lowest possible is 0 and the highest possible is the length of the list.
Please see [[Module:List]] for a full explanation of the parameters.
 
If the {{para|same}} parameter is set to "yes", "y", "true", or "1", the list order is the same for each module call on a given page.
 
Please see [[Module:List]] for a full explanation of the other parameters.