MinecraftConsoles/Minecraft.World/Random.h
2026-03-11 20:04:11 +03:00

51 lines
1.1 KiB
C++

#pragma once
#ifndef USE_LEGACY_RANDOM
class Random
{
private:
int64_t seed; // last seed used (for reference)
bool haveNextNextGaussian; // state for nextGaussian()
double nextNextGaussian; // cached Gaussian value
protected:
int next(int bits); // generates up to 32 random bits
public:
Random(); // uses a high-entropy seed
explicit Random(int64_t seed); // seed with a specific value
void setSeed(int64_t s); // re-seed the generator
void nextBytes(byte* bytes, unsigned int count);
double nextDouble();
double nextGaussian();
int nextInt();
int nextInt(int n); // in [0, n)
float nextFloat();
int64_t nextLong();
bool nextBoolean();
};
#else
class Random
{
private:
int64_t seed;
bool haveNextNextGaussian;
double nextNextGaussian;
protected:
int next(int bits);
public:
Random();
Random(int64_t seed);
void setSeed(int64_t s);
void nextBytes(byte *bytes, unsigned int count);
double nextDouble();
double nextGaussian();
int nextInt();
int nextInt(int to);
float nextFloat();
int64_t nextLong();
bool nextBoolean();
};
#endif