mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-07-25 16:24:53 +02:00
31 lines
527 B
C++
31 lines
527 B
C++
#pragma once
|
|
|
|
#include "base/basictypes.h"
|
|
|
|
// George Marsaglia-style random number generator.
|
|
class GMRng {
|
|
public:
|
|
GMRng() {
|
|
m_w = 0x23E866ED;
|
|
m_z = 0x80FD5AF2;
|
|
}
|
|
void Init(int seed) {
|
|
m_w = seed ^ (seed << 16);
|
|
if (!m_w) m_w = 1337;
|
|
m_z = ~seed;
|
|
if (!m_z) m_z = 31337;
|
|
}
|
|
uint32 R32() {
|
|
m_z = 36969 * (m_z & 65535) + (m_z >> 16);
|
|
m_w = 18000 * (m_w & 65535) + (m_w >> 16);
|
|
return (m_z << 16) + m_w;
|
|
}
|
|
float F() {
|
|
return (float)R32() / (float)(0xFFFFFFFF);
|
|
}
|
|
|
|
private:
|
|
uint32 m_w;
|
|
uint32 m_z;
|
|
};
|