12#ifndef ARCANE_CORE_IRANDOMNUMBERGENERATOR_H
13#define ARCANE_CORE_IRANDOMNUMBERGENERATOR_H
17#include "arcane/utils/Array.h"
89 memcpy(m_seed.data(), &value_in, std::min(m_seed.size(), (
Integer)
sizeof(T)));
90 for (
Integer i =
sizeof(T); i < m_seed.size(); i++) {
107 bool value(T& value_out,
bool without_size_check =
true)
const
109 if (m_seed.empty() || (!without_size_check &&
sizeof(T) != m_seed.size())) {
113 std::memcpy(&value_out, m_seed.data(), std::min(m_seed.size(), (
Integer)
sizeof(T)));
128 bool value(T* value_out,
bool without_size_check =
true)
const
130 if (m_seed.empty() || (
sizeof(T) != m_seed.size() && !without_size_check)) {
134 memcpy(value_out, m_seed.data(), std::min(m_seed.size(), (
Integer)
sizeof(T)));
145 return m_seed.size();
155 return m_seed.constView();
Déclarations des types utilisés dans Arcane.
Interface pour un générateur de nombre aléatoire.
virtual ByteConstArrayView viewSeed()=0
Méthode permettant de récupérer une vue constante sur la graine actuelle.
virtual ByteUniqueArray emptySeed()=0
Méthode permettant de récupérer une graine vide de bonne taille.
virtual Real generateRandomNumber(ByteArrayView seed, Integer leap=0)=0
Méthode permettant de générer un nombre aléatoire avec la graine transmise en paramètre.
virtual ByteUniqueArray generateRandomSeed(Integer leap=0)=0
Méthode permettant de générer une graine "enfant" à partir d'une graine "parent".
virtual bool isLeapSeedSupported()=0
Méthode permettant de savoir si les sauts sont permis sur le générateur de graines.
virtual Real generateRandomNumber(Integer leap=0)=0
Méthode permettant de générer un nombre aléatoire avec la graine en mémoire.
virtual ByteUniqueArray generateRandomSeed(ByteArrayView parent_seed, Integer leap=0)=0
Méthode permettant de générer une graine "enfant" à partir d'une graine "parent".
virtual bool isLeapNumberSupported()=0
Méthode permettant de savoir si les sauts sont permis sur le générateur de nombres.
virtual bool initSeed(ByteArrayView seed)=0
Méthode permettant d'initialiser le service.
virtual Integer neededSizeOfSeed()=0
Méthode permettant de connaitre la taille de seed nécessaire pour l'implémentation.
virtual bool initSeed()=0
Méthode permettant d'initialiser le service.
Classe permettant de manipuler facilement une graine.
bool value(T &value_out, bool without_size_check=true) const
Méthode permettant de récupérer la valeur de la graine.
Integer sizeOfSeed() const
Méthode permettant de récupérer la taille de la graine.
bool setValue(T value_in)
Méthode permettant de définir une valeur dans la graine.
ByteConstArrayView constView() const
Méthode permettant de récupérer une vue constante.
ByteUniqueArray copy()
Méthode permettant de récupérer une copie du tableau de Byte.
bool value(T *value_out, bool without_size_check=true) const
Méthode permettant de récupérer la valeur de la graine.
ByteArrayView view()
Méthode permettant de récupérer une vue.
RNGSeedHelper(T *var)
Constructeur de classe.
RNGSeedHelper(ByteArrayView av)
Constructeur de la classe.
RNGSeedHelper & operator=(T new_value)
Opérateur de copie depuis une valeur de graine.
-- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature --
ArrayView< Byte > ByteArrayView
Equivalent C d'un tableau à une dimension de caractères.
Int32 Integer
Type représentant un entier.
UniqueArray< Byte > ByteUniqueArray
Tableau dynamique à une dimension de caractères.
double Real
Type représentant un réel.
ConstArrayView< Byte > ByteConstArrayView
Equivalent C d'un tableau à une dimension de caractères.
unsigned char Byte
Type d'un octet.