Bonjour,
j'aurais besoin de générer un réel aléatoire qui soit compris entre deux réels.
Existe-t-il une fonction en C qui fait ceci ?
Merci
Version imprimable
Bonjour,
j'aurais besoin de générer un réel aléatoire qui soit compris entre deux réels.
Existe-t-il une fonction en C qui fait ceci ?
Merci
Salut,
bien sûr qu'il est possible de générer un nombre aléatoire en C. Tu dois d'abord inclure le header C <stdlib.h>. Puis, la fonction rand() te retourne un nombre aléatoire (ou plutôt pseudo-aléatoire) entre 0 et RAND_MAX). Tu peux donc aisément manipuler ces informations à l'aide d'opérations telles que :
pour obtenir les nombres désirés.Code:
1
2
3 nombreAleatoire = rand() % NBRE_MAX //retourne un nombre pseudo-aléatoire entre 0 et NBRE_MAX
Si tu veux un nombre "plus aléatoire", utilise la racine srand() qui peut générer des nombres aléatoires à partir de l'horloge de ton ordinateur par exemple.
Pour plus de détails, jette un coup d'oeil ici :
http://c.developpez.com/faq/?page=no..._random_bornes
ATTENTION, ce que tu vas générer avec ces fonctions sont des nombres pseudo aléatoires.
Il sont générés à l'aide d'une formule mathématique (congruence) et donc peuvent être prédictibles.
Question : que veut tu faire avec ces nombres aléatoires :
- pour un jeu et avoir des déplacements aléatoires, cela peut suffire
- pour de la cryptographie, il sont définitivement pas assez aléatoires, il va falloir te tourner vers d'autres choses
Pour la crypto, les nombres aléatoires possèdent aussi des contraintes de 'forme'. Je n'ai vu dans les applis indus que l'utilisation de hard dédié et jamais de soft pour générer de l'aléatoire fiable par rapport des problématiques de crypto.
Dans les applications hors industrie, on peut utiliser le Mersenne Twister qui a l'avantage d'une grande période et est souvent dans bien des cas plus rapide que drand48().