[Home] [Downloads] [Search] [Help/forum]

MUSHclient scripting

Description of MUSHclient world function: world.MtRand


Name MtRand
Type Method
Summary Returns pseudo-random number using the Mersenne Twister algorithm
Prototype double MtRand();

View list of data type meanings

Description

This returns a pseudo-random number in the range 0 to 1 (however excluding 1) as a "double" (floating-point number). Thus you can generate a number in any range by multiplying the result by the range you want.

eg.

print (math.floor (MtRand () * 5)) - returns 0 to 4

See below in the Lua section for an example of doing coin flips.

Note that the MT generator is "global" to all of MUSHclient. If you are trying to reproduce a sequence, then you cannot rely on a sequence staying stable from one script call to another (since another script, or another world or plugin, might also use random numbers).

This (Lua) script here, for example, would generate a million random numbers, and put them into a table for later use:

nums = {} -- empty table

MtSrand (1234567) -- start with a known seed

for j = 1, 1000000 do
table.insert (nums, MtRand ())
end

This took about a second to execute on my PC.

Over a run of 10,000,000 coins flips it seemed pretty accurate, giving 5,000,625 heads and 4,999,375 tails (in other words, around 50.00625% heads).

Example (in Lua) of rolling a 6-sided die:

for i = 1, 100 do
Tell (math.floor (MtRand () * 6) + 1, " ")
end

In the above example, multiplying by 6 gives a number in the range 0 to 5, and then we add 1 to make it 1 to 6.


For more details about the Mersenne Twister see:

http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html


Note: Available in version 3.57 onwards.


VBscript example
Note MtRand
Jscript example
Note (MtRand ())
Lua example
heads = 0
tails = 0

for j = 1, 1000000 do
  i = math.floor (MtRand () * 2)
  if i == 0 then
    heads = heads + 1
  else
    tails = tails + 1
  end  -- if
end  -- for

print ("heads = ", heads) --> 498893
print ("tails = ", tails) --> 501107
Returns A pseudo-random number in the range [0 to 1). In other words, zero might be returned, however 1 will not be.

To put it another way, the returned number is:

>= 0 and < 1
Introduced in version 3.57

See also ...

Function Description
MtSrand Seed the Mersenne Twister pseudo-random number generator

Search for script function

Enter a word or phrase in the box below to narrow the list down to those that match.

The function name, prototype, summary, and description are searched.

Search for:   

Leave blank to show all functions.


Return codes

Many functions return a "code" which indicates the success or otherwise of the function.

You can view a list of the return codes


Function prototypes

The "prototype" part of each function description lists exactly how the function is called (what arguments, if any, to pass to it).

You can view a list of the data types used in function prototypes


View all functions

[Back]

Quick links: MUSHclient. MUSHclient help. Forum shortcuts. Posting templates. Lua modules. Lua documentation.

Information and images on this site are licensed under the Creative Commons Attribution 3.0 Australia License unless stated otherwise.

[Home]


Written by Nick Gammon - 5K   profile for Nick Gammon on Stack Exchange, a network of free, community-driven Q&A sites   Marriage equality

Comments to: Gammon Software support
[RH click to get RSS URL] Forum RSS feed ( https://gammon.com.au/rss/forum.xml )

[Best viewed with any browser - 2K]    [Hosted at FutureQuest]