Attention: cette page se réfère à une ancienne version de SFML. Cliquez ici pour passer à la dernière version.

Générer des nombres aléatoires

Introduction

Générer des nombres pseudo-aléatoires n'est pas difficile, particulièrement avec les fonctions rand et srand de la bibliothèque standard. Mais on finit toujours par écrire des fonctions intermédiaires, par exemple pour obtenir un nombre aléatoire dans un intervalle spécifique, ou encore pour générer des nombres décimaux. C'est pourquoi la SFML fournit une classe utilitaire, sf::Randomizer, qui définit quelques fonctions pour vous aider.

Ce document est plus une référence qu'un réel tutoriel, tout ce qu'il vous montrera sont les fonctions de la classe sf::Randomizer.

Changer la graine

La première chose qu'à peu près tout le monde fait dans un programme utilisant les nombres aléatoires, est d'initialiser la graine afin de s'assurer que la séquence générée sera bien différente d'une exécution à l'autre. La SFML le fait automatiquement au lancement du programme, ainsi vous n'avez pas à vous en préoccuper.

Cependant, si vous souhaitez utiliser une graine spécifique (pour rejouer une séquence connue), vous pouvez utiliser la fonction SetSeed :

unsigned int Seed = 10;
sf::Randomizer::SetSeed(Seed);

Vous pouvez également récupérer la graine courante :

unsigned int Seed = sf::Randomizer::GetSeed();

Générer des nombres aléatoires dans des intervalles spécifiques

sf::Randomizer fournit deux fonctions pour générer des nombres aléatoires dans des intervalles donnés.

La première génère des nombres entiers :

// Renvoie un nombre entier aléatoire entre 0 et 100
int Random = sf::Randomizer::Random(0, 100);

Et la seconde génère des flottants :

// Renvoie un nombre réel aléatoire entre -1 et 1
float Random = sf::Randomizer::Random(-1.f, 1.f);

Conclusion

C'est tout ce qu'il y a à dire concernant les nombres aléatoires. Ces quelques fonctions devraient être suffisantes pour vos besoins ; toutefois, si vous avez besoin d'une bibliothèque de nombres aléatoires plus complète et plus complexe, vous pouvez jeter un oeil à boost.random.

Vous pouvez maintenant retourner au sommaire des tutoriels, ou passer aux tutoriels du module de fenêtrage.