📄 random.h
字号:
/* * random.h * * Mersenne Twister random number generator. * From Makoto Matsumoto and Takuji Nishimura. * * Portable Windows Library * * Copyright (c) 1993-2000 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Contributor(s): ______________________________________. * * $Log: random.h,v $ * Revision 1.1 2000/02/17 12:05:02 robertj * Added better random number generator after finding major flaws in MSVCRT version. * */#ifndef _PRANDOM#define _PRANDOM#ifdef __GNUC__#pragma interface#endif/**Mersenne Twister random number generator. An application would create a static instance of this class, and then use if to generate a sequence of psuedo-random numbers. Usually an application would simply use PRandom::Number() but if performance is an issue then it could also create a static local variable such as: { static PRandom rand; for (i = 0; i < 10000; i++) array[i] = rand; } This method is not thread safe, so it is the applications responsibility to assure that its calls are single threaded. */class PRandom{ public: /**Construct the random number generator. This version will seed the random number generator with a value based on the system time as returned by time() and clock(). */ PRandom(); /**Construct the random number generator. This version allows the application to choose the seed, thus letting it get the same sequence of values on each run. Useful for debugging. */ PRandom( DWORD seed /// New seed value, must not be zero ); /**Set the seed for the random number generator. */ void SetSeed( DWORD seed /// New seed value, must not be zero ); /**Get the next psuedo-random number in sequence. This generates one pseudorandom unsigned integer (32bit) which is uniformly distributed among 0 to 2^32-1 for each call. */ unsigned Generate(); /**Get the next psuedo-random number in sequence. */ inline operator unsigned() { return Generate(); } /**Get the next psuedo-random number in sequence. This utilises a single system wide thread safe PRandom variable. All threads etc will share the same psuedo-random sequence. */ static unsigned Number(); protected: enum { N = 624 }; /* cycle size */ unsigned long mt[N]; /* the array for the state vector */ int mti;};#endif // _PRANDOM// End Of File ///////////////////////////////////////////////////////////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -