// /*-------------------------------------------------------------------*\
// | Concrete Template : Random_Kernel_1
// \*-------------------------------------------------------------------*/
#ifndef CT_RANDOM_KERNEL_1
#define CT_RANDOM_KERNEL_1 1
///---------------------------------------------------------------------
/// Global Context -----------------------------------------------------
///---------------------------------------------------------------------
#include "AI/Random/Kernel.h"
///---------------------------------------------------------------------
/// Interface ----------------------------------------------------------
///---------------------------------------------------------------------
concrete_template <
concrete_instance class Rep =
Representation <Integer>
>
class Random_Kernel_1 :
implements
abstract_instance Random_Kernel,
encapsulates
concrete_instance Rep
{
private:
rep_field_name (Rep, 0, Integer, value);
/*!
math definition LIMIT: integer is
10000
math definition NEXT (
n: RANDOM_MODEL
): RANDOM_MODEL is
(101 * n + 2113) mod LIMIT
convention
0 <= self[value] < LIMIT
correspondence
self = self[value]
!*/
enumeration
{
limit = 10000,
multiplier = 101,
addend = 2113
};
public:
standard_concrete_operations (Random_Kernel_1);
procedure_body Set_Value (
preserves Integer n
)
{
self[value] = n mod limit;
}
function_body Integer Value ()
{
return self[value];
}
procedure_body Generate_Next ()
{
self[value] = (multiplier * self[value] + addend) mod limit;
}
function_body Integer Limit ()
{
return limit;
}
};
#endif // CT_RANDOM_KERNEL_1
Last modified: Thu Jan 11 17:05:57 EST 2007