fig10_54.cpp

来自「经典书籍源代码啊。。。第三版。。。数据结构与算法分析——C++描述(第3版).」· C++ 代码 · 共 43 行

CPP
43
字号
static const int A = 48271;
static const int M = 2147483647;
class Random
{
  public:
    explicit Random( int initialValue = 1 );

    int randomInt( );
    double random0_1( );
    int randomInt( int low, int high );

  private:
    int state;
};
/**
 * Construct with initialValue for the state.
 */
Random::Random( int initialValue )
{
    if( initialValue < 0 )
        initialValue += M;
    state = initialValue;
    if( state == 0 )
        state = 1;
}
/**
 * Return a pseudorandom int, and change the
 * internal state. DOES NOT WORK CORRECTLY.
 * Correct implementation is in Figure 10.55.
 */
int Random::randomInt( )
{
    return state = ( A * state ) % M;
}
/**
 * Return a pseudorandom double in the open range 0..1
 * and change the internal state.
 */
double Random::random0_1( )
{
    return (double) randomInt( ) / M;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?