NatFloat: Difference between revisions

From Vintage Story Wiki
No edit summary
m (Updated navbox to new code navbox.)
 
(9 intermediate revisions by 3 users not shown)
Line 1: Line 1:
A somewhat more natural random number generator.
{{GameVersion|1.19.3}}
A somewhat more natural random number generator. The main difference to pure random is that you can define a distribution to influence how often certain values are chosen.


If you create 8000 random numbers between 0..200 and plot them, where the X-Axis is the resulting value and the Y-Axis the amount of times this value was returned then you can see how the random number generator behaves. These are some simple plots for all distributions. Uniform is just your normal average random number generator.
'''Arguments'''
 
* '''avg''': Average value
* '''var''': Variation
* '''dist''': Distribution type
 
<table class="wikitable">
  <tr>
<th colspan="2">Overview - Distribution modes</th>
  </tr>
  <tr style="background-color: rgba(0,0,0,0.2);">
    <th style="background-color: rgba(0,0,0,0.2);">Name</th>
<th style="background-color: grey;">Explanation</th>
  </tr>
  <tr>
    <td>uniform</td>
<td>Select completely random numbers within avg-var until avg+var (the default distribution).</td>
  </tr>
  <tr>
    <td>triangle</td>
<td>Select random numbers with numbers near avg being the most commonly selected ones, following a triangle curve.</td>
  </tr>
  <tr>
    <td>gaussian</td>
<td>Select random numbers with numbers near avg being the most commonly selected ones, following a gaussian curve.</td>
  </tr>
  <tr>
    <td>narrowgaussian</td>
<td>Select random numbers with numbers near avg being the most commonly selected ones, following a narrow gaussian curve.</td>
  </tr>
  <tr>
    <td>verynarrowgaussian</td>
<td>Select random numbers with numbers near avg being the most commonly selected ones, following a very narrow gaussian curve.</td>
  </tr>
  <tr>
    <td>narrowinversegaussian</td>
<td>Select random numbers with numbers near avg being the least commonly selected ones, following an upside down gaussian curve.</td>
  </tr>
  <tr>
    <td>inversegaussian</td>
<td>Select random numbers with numbers near avg being the least commonly selected ones, following an upside down gaussian curve.</td>
  </tr>
  <tr>
    <td>narrowinversegaussian</td>
<td>Select random numbers with numbers near avg being the least commonly selected ones, following an upside down narrow gaussian curve.</td>
  </tr>
  <tr>
    <td>invexp</td>
<td>Select numbers in the form of avg + var, wheras low value of var are preferred.</td>
  </tr>
  <tr>
    <td>stronginvexp</td>
<td>Select numbers in the form of avg + var, wheras low value of var are strongly preferred.</td>
  </tr>
  <tr>
    <td>strongerinvexp</td>
<td>Select numbers in the form of avg + var, wheras low value of var are very strongly preferred.</td>
  </tr>
<tr>
    <td>dirac</td>
<td>Select completely random numbers within avg-var until avg+var only ONCE and then always 0.</td>
  </tr>
</table>
 
 
Here are some plots for these distributions. They are created by generating 8000 random numbers between 0 and 200, where the X-Axis is the resulting value and the Y-Axis the amount of times this value was chosen.  


[[File:Natfloat-uniform.png]]
[[File:Natfloat-uniform.png]]
Line 15: Line 81:
[[File:Natfloat-stronverinvexp.png]]
[[File:Natfloat-stronverinvexp.png]]
<br><br>
<br><br>
Translated to the Natfloat arguments the horizontal center point in these graphs denote the "avg" value, the width of the plot is determined by the "var" value. In json, these plots would be in the shape of <br><code>{ avg: 100, var: 100, dist: "uniform" }</code>
Translated to the Natfloat arguments the horizontal center point in these graphs denote the "avg" value, the width of the plot is determined by the "var" value. In json, the uniform distribution would be in the written as such: <br><code>{ avg: 100, var: 100, dist: "uniform" }</code>
 
 
See also [[EvolvingNatFloat]]
 
{{Navbox/codemodding}}

Latest revision as of 17:07, 27 March 2024

This page was last verified for Vintage Story version 1.19.3.

A somewhat more natural random number generator. The main difference to pure random is that you can define a distribution to influence how often certain values are chosen.

Arguments

  • avg: Average value
  • var: Variation
  • dist: Distribution type
Overview - Distribution modes
Name Explanation
uniform Select completely random numbers within avg-var until avg+var (the default distribution).
triangle Select random numbers with numbers near avg being the most commonly selected ones, following a triangle curve.
gaussian Select random numbers with numbers near avg being the most commonly selected ones, following a gaussian curve.
narrowgaussian Select random numbers with numbers near avg being the most commonly selected ones, following a narrow gaussian curve.
verynarrowgaussian Select random numbers with numbers near avg being the most commonly selected ones, following a very narrow gaussian curve.
narrowinversegaussian Select random numbers with numbers near avg being the least commonly selected ones, following an upside down gaussian curve.
inversegaussian Select random numbers with numbers near avg being the least commonly selected ones, following an upside down gaussian curve.
narrowinversegaussian Select random numbers with numbers near avg being the least commonly selected ones, following an upside down narrow gaussian curve.
invexp Select numbers in the form of avg + var, wheras low value of var are preferred.
stronginvexp Select numbers in the form of avg + var, wheras low value of var are strongly preferred.
strongerinvexp Select numbers in the form of avg + var, wheras low value of var are very strongly preferred.
dirac Select completely random numbers within avg-var until avg+var only ONCE and then always 0.


Here are some plots for these distributions. They are created by generating 8000 random numbers between 0 and 200, where the X-Axis is the resulting value and the Y-Axis the amount of times this value was chosen.

Natfloat-uniform.png Natfloat-triangle.png Natfloat-gauss.png Natfloat-narrowgauss.png Natfloat-verynarrowgauss.png

Natfloat-invgaus.png Natfloat-narrowinvgaus.png Natfloat-invexp.png Natfloat-stronginvexp.png Natfloat-stronverinvexp.png

Translated to the Natfloat arguments the horizontal center point in these graphs denote the "avg" value, the width of the plot is determined by the "var" value. In json, the uniform distribution would be in the written as such:
{ avg: 100, var: 100, dist: "uniform" }


See also EvolvingNatFloat


Icon Sign.png

Wondering where some links have gone?
The modding navbox is going through some changes! Check out Navigation Box Updates for more info and help finding specific pages.

Modding
Modding Introduction Getting Started Theme Pack
Content Modding Content Mods Developing a Content Mod Basic Tutorials Intermediate Tutorials Advanced Tutorials Content Mod Concepts
Code Modding Code Mods Setting up your Development Environment
Property Overview ItemEntityBlockBlock BehaviorsBlock ClassesBlock EntitiesBlock Entity BehaviorsWorld properties
Workflows & Infrastructure Modding Efficiency TipsMod-engine compatibilityMod ExtensibilityVS Engine
Additional Resources Community Resources Modding API Updates Programming Languages List of server commandsList of client commandsClient startup parametersServer startup parameters
Example ModsAPI DocsGitHub Repository