14#ifndef ARCANE_CORE_RANDOM_TKISS_H
15#define ARCANE_CORE_RANDOM_TKISS_H
19#include "arcane/utils/FatalErrorException.h"
21#include "arcane/core/random/RandomGlobal.h"
26namespace Arcane::random
40template<
typename UIntType, UIntType val>
44 typedef UIntType result_type;
45 typedef UIntType state_type;
46 static const bool has_fixed_range =
true;
47 static const result_type min_value = 0 ;
48 static const result_type max_value = 4294967295U;
56 result_type
min()
const {
return min_value; }
64 result_type
max()
const {
return max_value; }
73 explicit TKiss(UIntType x0 = 30903, UIntType y0 = 30903, UIntType z0 = 30903, UIntType w0 = 30903, UIntType carry0 = 0)
89 void seed(UIntType * state)
90 {
for (
Integer i=0;i<5;i++) _state[i] = state[i];}
102 {
for (
Integer i=0;i<4;i++) _state[i] = x0;
113 void seed(UIntType x0,UIntType y0,UIntType z0,UIntType w0,UIntType carry0)
114 { _state[0] = x0; _state[1] = y0;_state[2] = z0;_state[3] = w0;_state[4] = carry0;}
136 _state[0] = _state[0] * 69069 + 1;
137 _state[1] ^= _state[1] << 13;
138 _state[1] ^= _state[1] >> 17;
139 _state[1] ^= _state[1] << 5;
141 t = (_state[3]<<1) + _state[2] + _state[4];
142 _state[4] = ((_state[2]>>2) + (_state[3]>>3) + (_state[4]>>2)) >>30;
145 return (_state[0] + _state[1] + _state[2]);
163 {
return (_state[0] == rhs._state[0]) && (_state[1] == rhs._state[1]) && (_state[2] == rhs._state[2]) && (_state[3] == rhs._state[3]) && (_state[4] == rhs._state[4]) ; }
167 state_type _state[5];
174typedef TKiss<UInt32, 0> Kiss;
result_type min() const
Retourne la valeur minimum possible d'une séquence.
void seed(UIntType x0)
Initialisation du tableau de graines à partir de la valeur x0. Le tableau de graines de ce générate...
UIntType getState(Integer i) const
Méthode qui retourne la composante i del'état du générateur. L'état complet du générateur est donnée ...
void seed(UIntType x0, UIntType y0, UIntType z0, UIntType w0, UIntType carry0)
Initialisation du tableau de graines à partir des valeurs des arguments.
UIntType operator()()
Surdéfinition de l'opérateur () qui retourne la valeur pseudo aléatoire. L'état du générateur est mod...
void seed(UIntType *state)
Initialisation du tableau de graines à partir de l'état state. L'état du générateur state doit être c...
TKiss(UIntType x0=30903, UIntType y0=30903, UIntType z0=30903, UIntType w0=30903, UIntType carry0=0)
Constructeur avec initialisation du tableau de graines à partir des valeurs des arguments.
result_type max() const
Retourne la valeur maximum possible d'une séquence.
bool validation(UIntType x) const
Fonction de validation (je ne sais pas trop a quoi elle sert!)
bool operator==(const TKiss &rhs) const
Surdéfinition de l'opérateur ==.
Int32 Integer
Type représentant un entier.