Skip to content

Commit e719d05

Browse files
committed
Add Random class
1 parent 65f8419 commit e719d05

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

src/Processing.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3635,6 +3635,26 @@ class PShader {
36353635

36363636

36373637

3638+
// Java Random class
3639+
class Random {
3640+
::std::mt19937 rng;
3641+
public:
3642+
Random() : rng(::std::random_device{}()) {}
3643+
explicit Random(long seed) : rng((unsigned)seed) {}
3644+
float nextFloat() { return ::std::uniform_real_distribution<float>(0,1)(rng); }
3645+
double nextDouble(){ return ::std::uniform_real_distribution<double>(0,1)(rng); }
3646+
int nextInt() { return (int)rng(); }
3647+
int nextInt(int n){ return ::std::uniform_int_distribution<int>(0,n-1)(rng); }
3648+
long nextLong() { return (long)rng(); }
3649+
bool nextBoolean() { return rng()&1; }
3650+
float nextGaussian() {
3651+
float u=nextFloat()*2-1, v=nextFloat()*2-1, s=u*u+v*v;
3652+
if(s>=1||s==0) return nextGaussian();
3653+
float m=::std::sqrt(-2*::std::log(s)/s); return u*m;
3654+
}
3655+
void setSeed(long seed) { rng.seed((unsigned)seed); }
3656+
};
3657+
36383658
// Java StringBuilder
36393659
class StringBuilder {
36403660
::std::string buf;

0 commit comments

Comments
 (0)