=============================
Other Functions and Variables
=============================

We're in the process of migrating the documentation over to a new
tool. As not every page has been migrated yet, this exists to document
new functionality that has no other place to go.

.. include:: inc/other

Ren'Py Version
--------------

.. include:: inc/renpy_version

.. var:: renpy.version_string

    The version number of Ren'Py, as a string of the form "Ren'Py 1.2.3.456".

.. var:: renpy.version_only

    The version number of Ren'Py, without the Ren'Py prefix. A string of
    the form "1.2.3.456".

.. var:: renpy.version_tuple

    The version number of Ren'Py, as a tuple of the form (1, 2, 3, 456).

.. var:: renpy.version_name

    A human readable version name, of the form "Example Version."

.. var:: renpy.license

    A string giving license text that should be included in a game's
    about screen.

Platform Detection
-------------------

Ren'Py includes a number of variables that are set based on which platform
it's running on.

.. var:: renpy.windows

    True when running on Windows.

.. var:: renpy.macintosh

    True when running on macOS.

.. var:: renpy.linux

    True when running on Linux or other POSIX-like operating systems.

.. var:: renpy.android

    True when running on Android.

.. var:: renpy.ios

    True when running on iOS.

.. var:: renpy.emscripten

    True when running in the browser.

.. var:: renpy.mobile

    True when running on Android or iOS or in the browser.

These are only set when running on the actual devices, not when running on
in the emulators. These are more intended for use in platform-specific
Python. For display layout, use :ref:`screen variants <screen-variants>`.


Memory Profiling
-----------------

.. include:: inc/memory

Contexts
---------

.. include:: inc/context

renpy.random
-------------

This object is a random number generator that implements
`the Python random number generation interface <http://docs.python.org/release/2.3.4/lib/module-random.html>`_.
Randomness can be generated by calling the various methods this object
exposes. See the Python documentation for the full list, but the most useful
are:

* ``renpy.random.random()``

Return the next random floating point number in the range (0.0, 1.0).

* ``renpy.random.randint(a, b)``

Return a random integer such that a <= N <= b.

* ``renpy.random.choice(seq)``

Return a random element from the non-empty sequence `seq`.

* ``renpy.random.shuffle(seq)``

Shuffles the elements of the sequence `seq` in place. This does not return
a list, but changes an existing one.

Unlike the standard Python random number generator, this object cooperates with
rollback, generating the same numbers regardless of how many times we rollback.
It should be used instead of the standard Python random module. ::

    # return a random float between 0 and 1
    $ randfloat = renpy.random.random()

    # return a random integer between 1 and 20
    $ d20roll = renpy.random.randint(1, 20)

    # return a random element from a list
    $ randfruit = renpy.random.choice(['apple', 'orange', 'plum'])

* ``renpy.random.Random(seed=None)``

Returns a new random number generator object separate from the main one, seeded
with the specified value if provided.
