Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-05-2011, 19:32   #1
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
[C++] Generazione random number

Rieccomi....avrei bisogno di una mano a scrivere del codice per la creazione di un numero casuale. Sono al corrente di rand e srand, ma vi spiego il problema:

Codice:
int random(){
  int number = 100;
  srand(time(NULL));
  int randomNumber = rand() % number + 1;
  return randomNumber;
}
Il codice è perfetto, ma solo se viene chiamato con intervalli di larghi. O meglio detto: Se viene chiamato in un loop per esempio, dato che rand e srand sono legati al "tempo", viene generato sempre lo stesso numero. Se io scrivo:

Codice:
...
int  numero1 = random();
int  numero2 = random();
int  numero3 = random();
int  numero4 = random();
int  numero5 = random();
...
...tutte le variabili numeroX hanno lo stesso valore.
Cerco un modo per risolvere questo quesito.
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
Old 07-05-2011, 19:59   #2
Gimli[2BV!2B]
Senior Member
 
L'Avatar di Gimli[2BV!2B]
 
Iscritto dal: Feb 2006
Città: Parma
Messaggi: 3010
srand va invocato una sola volta: imposta il seme della sequenza di numeri pseudo-casuali.
La tua funzione lo invoca molte volte "nello stesso istante", quindi con lo stesso valore fornito da time, ottenendo sempre lo stesso numero: il primo della sequenza pseudo-casuale inizializzata.

Esempio corretto, generazione di 100 numeri pseudo-casuali, range 1-100:
Codice:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

void main()
{
  srand((unsigned)time(NULL));

  int x = 0, nMax_rand = 100;
  while( x++ < 100 )
  {
    printf( "%i\t", rand() % nMax_rand + 1 );

    if( x % 5 == 0 )
      printf("\n");
  }
}
__________________
~Breve riferimento ai comandi GNU/Linux (ormai non molto breve...)
Gimli[2BV!2B] è offline   Rispondi citando il messaggio o parte di esso
Old 07-05-2011, 21:00   #3
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
Questo è il mio metodo:

Codice:
/*
 * This method returns a random number accordingly to
 * the entries of the passed table name in the database
 */
int Database::getRandomNumber(string tableName) {


	string aQuery = "SELECT number, count(*) FROM " + tableName + ";";
	sqlite3_stmt *pStmt;
	char* ptAQuery = &aQuery[0];
	if (sqlite3_prepare_v2(databaseConnection, ptAQuery, -1, &pStmt, 0)
			!= SQLITE_OK) {
		cerr << "db error (preparev2 in getRandomNumber): " << sqlite3_errmsg(
				databaseConnection) << endl;
	}
	if (sqlite3_step(pStmt) != SQLITE_ROW) {
		cerr << "db error (step in getRandomNumber): " << sqlite3_errmsg(
				databaseConnection) << endl;
	}

        int number = sqlite3_column_int(pStmt, 0);
	srand(time(NULL));
        int randomNumber = rand() % number + 1;
	sqlite3_finalize(pStmt);
        number = 0;
        return randomNumber;
}
il metodo viene richiamato 6 volte di fila per creare la gui.
Come faccio?
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
Old 07-05-2011, 21:19   #4
Tommo
Senior Member
 
L'Avatar di Tommo
 
Iscritto dal: Feb 2006
Messaggi: 1304
Basta levare srand da la e metterlo in un qualsiasi altro posto che viene chiamato una sola volta
Pure il main andrebbe benissimo.
__________________
*ToMmO*

devlog | twitter
Tommo è offline   Rispondi citando il messaggio o parte di esso
Old 08-05-2011, 09:06   #5
Emaborsa
Senior Member
 
L'Avatar di Emaborsa
 
Iscritto dal: Sep 2004
Città: Bolzano
Messaggi: 2163
Quote:
Originariamente inviato da Tommo Guarda i messaggi
Basta levare srand da la e metterlo in un qualsiasi altro posto che viene chiamato una sola volta
Pure il main andrebbe benissimo.
!!!!!funziona. Grazie mille!
__________________
Vendo...nulla.
Cerco...la felicità
.
Emaborsa è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
iPhone 18 Pro Max, il test sulla vapor c...
Fine estate in giardino: le proposte sco...
Batterie allo stato solido dietro l'ango...
Gears of War: E-Day raggiunge la fase Go...
GTA 6 avrà un'edizione fisica, ma...
Pangram arriva su Gmail per identificare...
ASUS ProArt Display OLED: quattro nuovi ...
Saldi Autunnali Mammotion: fino a 369 € ...
La BEI annuncia un nuovo Consiglio di es...
Il board di Meta ordina la rimozione di ...
Sony 400mm f/4.5 e 600mm f/6.3 GM: un gr...
Anche gli avvocati sono a rischio? OpenA...
JBL Tune Beam 2 a 59€ (invece di 99€): a...
Pioggia di sconti con Engwe: e-bike con ...
HONOR Pad 20 e Pad 20 Pro: due tablet pe...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:47.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v