In this tutorial, we will explain how to generate random numbers in WarpScript.
For example, this can be useful for generating random Geo Time Series with respect to a given probability distribution.
Generating a random number in WarpScript can be done with a single statement:
This function will generate a random number in [0.0, 1.0). The number generated is sampled uniformly in this interval.
Using this function, you can generate a random GTS like this:
We obtain a GTS with samples from a uniform distribution in [0.0, 1.0). Sometimes, it is preferable to generate a random walk GTS.
For this, we can use RAND to generate deltas between successive values instead. And since we want deltas to be either positive or negative, we can use a custom macro based on RAND to sample a random number in [-1.0, 1.0):
deltaRAND to generate a random walk GTS can be done like this:
In the previous example, we used the function
RAND that samples a random number from a uniform distribution. What if we wanted to sample from a normal distribution instead?
To do this, you can use a macro from our macro repository. Make sure that warpfleet-resolver is configured to pull macros from SenX macro repository (by default this is enabled). Then you can do:
This will sample 10 points from a normal distribution with mean 0.0 and standard deviation 1.0.
You can use it to generate a random GTS from the normal distribution like this:
For other distributions, there is the WarpScript function
RANDPDF. This function takes as argument a histogram representing the probability of each value of the random variable. It outputs a random generator function that you can call using
Here is an example:
Now you can call this function:
Result: ["raw meat","raw meat","banana","artichoke","artichoke"]
Indeed, you can use
RANDPDF to create generator functions of any kind of distribution provided you can create the input histogram.
It can be useful to reproduce the results of a script. In order to be able to do that with a random generator, you must be able to give it a seed, which it will use to return samples in a deterministic way.
In WarpScript, you can seed an internal random generator using
PRNG, like this:
Henceforth, to obtain deterministic results, instead of using
RANDPDF, you can use
SRANDPDF which will use the internal random generator that was seeded by
In this article, you have learned how to:
- generate a random number
- generate a random GTS
- generate a random walk GTS
- do the above points according to a uniform or normal distribution
- do the above points according to a given probability distribution
- do the above in a deterministic way
If you want to learn more about WarpScript, you can check out the article series on Thinking in WarpScript.
Machine Learning Engineer