System expressions like choose(...values)
and random(min, max)
use the JavaScript Math.random()
method. Which tends to be fairly high quality ( certainly better the MST ) but doesn't allow for seeding. It's down the browser vendor to what algorithm they use for it. I believe Chrome uses an xorshift variant.
The Advanced Random plugin uses the xorshiro256* algorithm, in which we allow the developer to specify a seed ( although the default mode uses a random seed ). More advanced features of Advanced Random like perlin noise, permutation tables and cellular noise all that PRNG as a source. So are based off the seed. You can also set Advanced Random to replace the source of randomness which the System expressions use.
newt what do you mean by complex noise? We have 2D and 3D variants of Improved Perlin, Billow, Ridged, Cellular and Voronoi noise. Perlin and it's derivatives utilise Fractional Brownian Motion as well. They are all derived from a seed.
— you should be able to create MersenneTwister using JavaScript if you want. I'm not that familiar with the algorithm but there is an implementation here. It's worth noting that it is quite complex and isn't considered "good" anymore. There's some passable simple PRNGs written in JS here. I'm not sure what the quality is like, but they will likely be "good enough".