Crea il tuo forum GRATIS su GlobalFreeForum.com.

[C++] Numeri pseudo-casuali

Sezione dedicata al principe dei linguaggi di programmazione e alla sua estensione a oggetti

Moderatori: Gruppo Admin, Gruppo Mod

[C++] Numeri pseudo-casuali

Messaggioda l'insetto » 03/03/2013 - 11:11

qualche esercizio facile?
Esercizio 1
Facendo riferimento a questi 2 link, sto cercando di risolvere l'Esercizio 1. Ho un problema non riesco a generare numeri casuali se non così, perchè se provo a generarne uno solo mi da solo il valore massimo.
Codice: Seleziona tutto
// Traslazione e applicazione di un fattore di scala
#include<iostream>
using std::cout;
using std::endl;

#include<iomanip>
using std::setw;

#include<cstdlib> // Contiene il prototipo della funzione rand
using std::rand;

int main()
{
   // Cicla 20 volte
   for ( int counter = 1; counter <= 20; counter++)
   {
      // Genera un numero casuale tra 1 e 6 e lo visualizza
      cout << setw( 10 ) << ( 1 + rand() % 6 );
      
      // Se counter è divisibile per 5, comincia una nuova riga di output
      if ( counter % 5 == 0 )
      cout << endl;
   } // Fine ciclo for
   
   return 0; // Denota una coretta terminazione
} // Fine funzione main
(Ho preso questo programma dal libro C++ fondamenti di programmazione).
Quindi avrei 2 domande:
1) Come posso generare un solo numero casuale senza che mi dia solo il valore massimo?
2) Come faccio ad assegnare un numero casuale ad una variabile?

P.S.: L' IDE che uso è Dev-C++
< Acta Non Verba >
< Impara a far fruttare i tuoi errori >
Avatar utente
l'insetto
Utente
Utente
 
Messaggi: 62
Iscritto il: 29/01/2013 - 21:40

Re: [C++] Numeri pseudo-casuali

Messaggioda gumis » 03/03/2013 - 16:51

aggiungi prima del ciclo for
Codice: Seleziona tutto
srand(time(NULL));

srand serve per permetterti di generare random con un seed, time(NULL) restituisce secondi così hai sempre un seed diverso.
usando lo stesso seed infatti ottieni sempre gli stessi numeri quando riesegui il programma
gumis
Utente
Utente
 
Messaggi: 213
Iscritto il: 24/02/2010 - 18:48

Re: [C++] Numeri pseudo-casuali

Messaggioda l'insetto » 03/03/2013 - 21:02

gumis ha scritto:aggiungi prima del ciclo for
Codice: Seleziona tutto
srand(time(NULL));

srand serve per permetterti di generare random con un seed, time(NULL) restituisce secondi così hai sempre un seed diverso.
usando lo stesso seed infatti ottieni sempre gli stessi numeri quando riesegui il programma

Facendo come dici tu fa cosi, anche se è molto probabile che sia un mio errore.
Allegati
Dwm 2013-03-03 20-58-10-56.png
Dwm 2013-03-03 20-58-10-56.png (100.03 KiB) Osservato 182 volte
< Acta Non Verba >
< Impara a far fruttare i tuoi errori >
Avatar utente
l'insetto
Utente
Utente
 
Messaggi: 62
Iscritto il: 29/01/2013 - 21:40

Re: [C++] Numeri pseudo-casuali

Messaggioda Rom3oCrash » 03/03/2013 - 21:37

ti manca una libreria, indovina quale ? ;)
init1.it
ogni 2 parole c'era un figlio di puttana in mezzo xDD

«C’è chi si gode la vita, c’è chi la soffre, invece noi la combattiamo».
Avatar utente
Rom3oCrash
Utente
Utente
 
Messaggi: 672
Iscritto il: 04/05/2011 - 18:47

Re: [C++] Numeri pseudo-casuali

Messaggioda l'insetto » 04/03/2013 - 18:35

Devo inserire
Codice: Seleziona tutto
#include<ctime>
oppure
Codice: Seleziona tutto
#include<srand.h>

P.S.: non ho idea di cosa facciano
< Acta Non Verba >
< Impara a far fruttare i tuoi errori >
Avatar utente
l'insetto
Utente
Utente
 
Messaggi: 62
Iscritto il: 29/01/2013 - 21:40

Re: [C++] Numeri pseudo-casuali

Messaggioda Rom3oCrash » 04/03/2013 - 18:57

beh ma se lo dico io non ce piu gusto :D
ti consiglio di diventare buon amico di google (tranquillo non morde)

ritornando al tuo problema la libreria di utilità generiche stdlib.h fornisce, tra le altre, la funzione rand() per la generazione di numeri casuali
per fare in modo che ogni esecuzione del programma generi un diverso valore dobbiamo variare il seme usato per inizializzare il generatore di numeri pseudo-casuali (operazione che in gergo viene chiamata randomizzazione).
La randomizzazione viene fatta tramite la funzione srand(), che richiede un parametro di input di tipo unsigned (intero senza segno). Per generare il seme, tipicamente viene sfruttata la funzione time() della libreria time.h che, invocata con parametro NULL (una costante speciale che useremo anche nel prosieguo del corso) restituisce un valore unsigned che rappresenta l'ora corrente del giorno espressa in secondi.
init1.it
ogni 2 parole c'era un figlio di puttana in mezzo xDD

«C’è chi si gode la vita, c’è chi la soffre, invece noi la combattiamo».
Avatar utente
Rom3oCrash
Utente
Utente
 
Messaggi: 672
Iscritto il: 04/05/2011 - 18:47

Re: [C++] Numeri pseudo-casuali

Messaggioda l'insetto » 04/03/2013 - 19:17

Rom3oCrash ha scritto:beh ma se lo dico io non ce piu gusto :D
ti consiglio di diventare buon amico di google (tranquillo non morde)

ritornando al tuo problema la libreria di utilità generiche stdlib.h fornisce, tra le altre, la funzione rand() per la generazione di numeri casuali
per fare in modo che ogni esecuzione del programma generi un diverso valore dobbiamo variare il seme usato per inizializzare il generatore di numeri pseudo-casuali (operazione che in gergo viene chiamata randomizzazione).
La randomizzazione viene fatta tramite la funzione srand(), che richiede un parametro di input di tipo unsigned (intero senza segno). Per generare il seme, tipicamente viene sfruttata la funzione time() della libreria time.h che, invocata con parametro NULL (una costante speciale che useremo anche nel prosieguo del corso) restituisce un valore unsigned che rappresenta l'ora corrente del giorno espressa in secondi.

Adesso mi metto subito al lavoro per vedere se ci riesco :D
E poi ho provato ad usare google ma si vede che non so cercare XD
< Acta Non Verba >
< Impara a far fruttare i tuoi errori >
Avatar utente
l'insetto
Utente
Utente
 
Messaggi: 62
Iscritto il: 29/01/2013 - 21:40

Re: [C++] Numeri pseudo-casuali

Messaggioda AlexZ » 06/04/2013 - 11:44

Ho visto il tag C++ e di conseguenza mi chiedo : "Perchè adoperare le deprecate librerie del C quando ci sono le analoghe clibrary del C++?"

Ti consiglio di dare un'occhiata a questo stralcio di codice.
Have a look

Lascia che ti dia un piccolo consiglio, quando hai la necessità di controllare come funzionino le funzioni standard del C/C++ fai riferimento a questo sito che risulta
essere molto completo e dettagliato, ed inoltre, aggiornato anche al nuovissimo standard del C++11.

C++ Reference
Avatar utente
AlexZ
Utente
Utente
 
Messaggi: 261
Iscritto il: 07/04/2008 - 13:57

Re: [C++] Numeri pseudo-casuali

Messaggioda cyd » 06/04/2013 - 17:17

un'estensione immediata. Scrivi una funzione che generi un numero pseudocasuale. ovvero implementa un metodo equivalente a rand().
Avatar utente
cyd
Utente
Utente
 
Messaggi: 257
Iscritto il: 17/05/2007 - 13:52

Re: [C++] Numeri pseudo-casuali

Messaggioda l'insetto » 14/04/2013 - 10:11

AlexZ ha scritto:Ho visto il tag C++ e di conseguenza mi chiedo : "Perchè adoperare le deprecate librerie del C quando ci sono le analoghe clibrary del C++?"

Ti consiglio di dare un'occhiata a questo stralcio di codice.
Have a look

Lascia che ti dia un piccolo consiglio, quando hai la necessità di controllare come funzionino le funzioni standard del C/C++ fai riferimento a questo sito che risulta
essere molto completo e dettagliato, ed inoltre, aggiornato anche al nuovissimo standard del C++11.

C++ Reference


Hai ragione non è corretto utilizzare una libreria di C in C++, comunque C++ Reference è un ottimo sito, anche se il mio inglese non è il massimo.
< Acta Non Verba >
< Impara a far fruttare i tuoi errori >
Avatar utente
l'insetto
Utente
Utente
 
Messaggi: 62
Iscritto il: 29/01/2013 - 21:40


Torna a C/C++

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti

cron