Anonimo
Anonimo ha chiesto in Computer e InternetProgrammazione e Design · 1 decennio fa

come generare numeri random in c++?

vorrei assegnare ad una variabile un numero a caso.

in internet ho trovato qualcosina un inglese ma copiano i codici sorgenti e provandoli a compilare capivo che nn erano proprio a caso.

infatti il primo numero era sempre lo stesso e gli altri cambiavano.

ad esempio:

assegno a x un numero a caso e mi scrive 9

poi lo riassegno e mi scrive 23

poi ancora e mi scrive 57

però se rieseguo il programma i numeri cambiano tranne il primo che resta 9.

qualcuno sa darmi una mano?

4 risposte

Classificazione
  • 1 decennio fa
    Risposta preferita

    intanto

    #include <cstdlib>

    poi hai la funzione rand() che ti dà un numero *pseudocasuale* tra 0 e RAND_MAX

    la parola chiave è pseudocasualità; generatori di numeri casuali ne esistono a bizeffe, ognuno con delle sue proprie caratteristiche, perché la casualità vera è una brutta bestia... eventi stocastici reali hanno caratteristiche particolari analizzabili, e in campi in cui serve un numero "casuale", in realtà avremo sempre una pseudocasualità, ma con le caratteristiche volute per l'evento in questione.

    l'algo dietro rand() è generico e va bene per svariate situazioni... ma tieni presente che un'altra cosa importante della (pseudo)casualità in ambito della programmazione è la ripetibilità della sequenza pseudocasuale, per riprodurre lo stesso comportamento.

    sicché, a partire dallo stesso seme, lo stesso algoritmo genererà sempre la stessa sequenza (che a guardarla, appare "casuale");

    se non vuoi che ciò accada, devi impostare un seme diverso ogni volta con srand; il modo più comune è quello di usare il "tempo", così che siamo sicuri ogni volta di avere un seme diverso, e dunqueuna sequenza pseudocasuale diversa;

    esempio lo trovi:

    http://www.cppreference.com/wiki/c/other/rand

    nota l'srand(time(NULL))

  • 6 anni fa

    Molto semplice!!!

    metti le librerie:

    #include <iostream>

    #include <cstdlib>

    #include <cmath>

    #include <iomanip>

    #include <time.h> Questa serve per i numeri casuali!

    using namespace std;

    int main(){

    int v[10], i;

    for(i=0; i<10; i++){

    v[i]=rand()%100+1; Al posto di 100 puoi scrivere qualunque numero(10, 5, 678, 48767, ...), il +1 serve in questo caso per farti dare dal computer numeri compresi tra 1 e 101, se non avessi scritto 100+1, ma solo 100 il computer mi darebbe numeri compresi tra 0 e 100.

    cout << v[i] << endl;

    }

    system("pause");

    return 0;

    }

    se vuoi scrivere un numero random compreso tra 5 e 15... devi mettere v[i]=rand()%10+5;

    Il primo numero in questo caso è 10 cioè la differenza tra 15 e 5, e il secondo numero è 5 cioè il numero minore.

    Altro esempio: numero random compreso tra 43 e 74...

    v[i]=rand()%31+43;

    Fonte/i: Me stesso.
  • 1 decennio fa

    Prima di tutto devi includere queste due librerie:

    #include<stdlib.h>

    #include<time.h>

    Poi subito dopo del codice int main (){

    devi inserire:

    srand(time(NULL));

    Le variabili vanno inizializzate così:

    variabile=rand()%numero;

    Ad esempio se scrivi var=rand()%100 avrai numeri random da 0 a 99.

  • 1 decennio fa

    Per generare ogni volta numeri diversi utilizza la funzione (dichiarata nella libreria stdlib.h) randomize;.

    I numeri generati dal computer non sono veramente casuali, con questa funzione puoi però ottenere una migliore randomizzazione dei numeri.

Altre domande? Fai una domanda e ottieni le risposte che cerchi.