Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Fonction rand

La fonction quick_exit La macro RAND_MAX


Entête à inclure

#include <stdlib.h>  // <cstdlib> en C++

Fonction rand

int rand();

Cette fonction renvoie une valeur aléatoirement. Pour fonctionner correctement, le générateur de nombres aléatoires a besoin d'être initalisé via la fonction srand.

La valeur calculée est comprise entre 0 et RAND_MAX. Cette dernière valeur est elle aussi définie dans l'entête <stdlib.h>.

l'aléatoire est un concept qu'on a du mal à traiter en informatique, étant données que nos machines sont des systèmes déterministes. Actuellement, l'aléa est simulé via des algorithmes mathématiques qui renvoient des suites de valeurs. Si ces algorithmes sont utilisés plusieurs fois à la suite, ils ont le défaut de toujours renvoyer la même suite de valeurs. Pour contourner ce problème, on initialise souvent ces algorithmes avec une valeur imprédictible : pourquoi pas le temps système de la machine.

Paramètres

Cette fonction ne nécessite aucun paramètre.

Valeur de retour

La nouvelle valeur aléatoire calculée.

Exemple de code

#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>


int main() {

    // On commence par initialiser le générateur de nombre pseudo-aléatoires.
    srand( time( NULL ) );

    while( true ) {
        // Tirer une valeur aléatoire entre 0 et 100.
        int searchedValue = rand() % 101;       // % => Reste de la division entière
        int editedValue;
        int score = 0;
        printf( "MegaGame V1.0 - Valeur secrète == %d\n", searchedValue );

        while( true ) {
            printf( "Veuillez saisir un entier (entre 0 et 100) : " );
            fflush( stdout );
            scanf( "%d", & editedValue );
            score++;

            if ( editedValue == searchedValue ) {
                printf( "Félicitation : trouvé en %d coups !\n", score );
                break;      // intérrompre la boucle des manches (pas celle des parties)
            }
            if ( editedValue < searchedValue ) {
                printf( "La valeur à trouver est plus grande.\n" );
            } else {
                printf( "La valeur à trouver est plus petite.\n" );
            }
        }

        printf( "Souhaitez-vous recommencer une partie (0 Non / 1 Oui) : " );
        fflush( stdout );
        scanf( "%d", & editedValue );
        if ( editedValue == 0 ) break;
    }

    printf( "Bye bye !\n" );

    return EXIT_SUCCESS;
}

Sujets connexes

RAND_MAX
<stdlib.h>
srand
time


La fonction quick_exit La macro RAND_MAX