summaryrefslogtreecommitdiff
path: root/osframework/source/SexyAppFramework/MTRand.h
diff options
context:
space:
mode:
Diffstat (limited to 'osframework/source/SexyAppFramework/MTRand.h')
-rw-r--r--osframework/source/SexyAppFramework/MTRand.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/osframework/source/SexyAppFramework/MTRand.h b/osframework/source/SexyAppFramework/MTRand.h
new file mode 100644
index 0000000..d01aa81
--- /dev/null
+++ b/osframework/source/SexyAppFramework/MTRand.h
@@ -0,0 +1,43 @@
+#ifndef __MTRAND_H__
+#define __MTRAND_H__
+
+#include <string>
+
+namespace Sexy
+{
+
+#define MTRAND_N 624
+
+class MTRand
+{
+ unsigned long mt[MTRAND_N]; /* the array for the state vector */
+ int mti;
+
+public:
+ MTRand(const std::string& theSerialData);
+ MTRand(unsigned long seed);
+ MTRand();
+
+ void SRand(const std::string& theSerialData);
+ void SRand(unsigned long seed);
+ unsigned long NextNoAssert();
+ unsigned long Next();
+ unsigned long NextNoAssert(unsigned long range);
+ unsigned long Next(unsigned long range);
+ float NextNoAssert(float range);
+ float Next( float range );
+
+ std::string Serialize();
+
+ static void SetRandAllowed(bool allowed);
+};
+
+struct MTAutoDisallowRand
+{
+ MTAutoDisallowRand() { MTRand::SetRandAllowed(false); }
+ ~MTAutoDisallowRand() { MTRand::SetRandAllowed(true); }
+};
+
+}
+
+#endif //__MTRAND_H__ \ No newline at end of file