    /***************************************************************************
                              randomactuator.h  -  description
                                 -------------------
        begin                : Wed Dec 20 2000
        copyright            : (C) 2000 by Jan Walter
        email                : jan@blender.nl
     ***************************************************************************/

    /***************************************************************************
     *                                                                         *
     *   This program is free software; you can redistribute it and/or modify  *
     *   it under the terms of the GNU General Public License as published by  *
     *   the Free Software Foundation; either version 2 of the License, or     *
     *   (at your option) any later version.                                   *
     *                                                                         *
     ***************************************************************************/

    #ifndef RANDOMACTUATOR_H
    #define RANDOMACTUATOR_H

    #include <actuator.h>

    /**A RandomActuator is a special kind of a general actuator.
      *@author Jan Walter
      */

    class Actuator.html">RandomActuator : public Actuator  {
    public:
    	RandomActuator();
    	~RandomActuator();
      /** Set the initial seed of the generator. Equal seeds produce equal series. If the seed is 0, the generator will produce the same value on every call. */
      PyObject* setSeed(int seed);
      /** Returns the initial seed of the generator. Equal seeds produce equal series. */
      PyObject* getSeed();
      /** Returns the first parameter of the active distribution. Refer to the documentation of the generator types for the meaning of this value. */
      PyObject* getPara1();
      /** Returns the second parameter of the active distribution. Refer to the documentation of the generator types for the meaning of this value. */
      PyObject* getPara2();
      /** Returns the type of the active distribution. */
      PyObject* getDistribution();
      /** Set the property to which the random value is assigned. If the generator and property types do not match, the assignment is ignored. */
      PyObject* setProperty(char* name);
      /** Return the property to which the random value is assigned. If the generator and property types do not match, the assignment is ignored. */
      PyObject* getProperty(char* name);
      /** Set this generator to produce a constant boolean value. */
      PyObject* setBoolConst(int value);
      /** Set this generator to produce true and false, each with 50% chance of occuring. */
      PyObject* setBoolUniform();
      /** Return false value * 100% of the time. */
      PyObject* setBoolBernouilli(float value);
      /** Always return value. */
      PyObject* setIntConst(int value);
      /** Return a random integer between lower_bound and upper_bound. The boundaries are included. */
      PyObject* setIntUniform(int lower_bound, int upper_bound);
      /** Return a Poisson-distributed number. This performs a series of Bernouilli tests with parameter value. It returns the number of tries needed to achieve succes. */
      PyObject* setIntPoisson(float value);
      /** Always return value. */
      PyObject* setFloatConst(float value);
      /** Return a random integer between lower_bound and upper_bound. */
      PyObject* setFloatUniform(float lower_bound, float upper_bound);
      /** Return normal-distributed numbers. The average is mean, and the deviation from the mean is characterized by standard_deviation. */
      PyObject* setFloatNormal(float mean, float standard_deviation);
      /** Return negative-exponentially distributed numbers. The half-life 'time' is characterized by half_life. */
      PyObject* setFloatNegativeExponential(float half_life);
    };

    #endif