Torna indietro   Hardware Upgrade Forum > Software > Programmazione

NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine
Dopo anni di attesa e una lunga fase di sviluppo, Noctua entra nel mercato dei dissipatori a liquido AIO con la nuova serie NL-LC1. Forte dell'esperienza maturata nel raffreddamento ad aria, l'azienda austriaca promette di portare la propria filosofia fatta di qualità costruttiva, attenzione ai dettagli e silenziosità anche in questo segmento. Abbiamo provato il nuovo sistema per scoprire se riesce a distinguersi in un mercato ormai molto competitivo.
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super
Arrivato sul mercato italiano a fine marzo, la serie Boox Go 10.3 (Gen II) offre Android 15, penna da 4096 livelli e retroilluminazione opzionale (nel modello da noi provato, Lumi, presente). La serie si compone di due tablet ePaper che fanno da e-reader, blocco note digitale e persino browser, tutto a un prezzo che fa dimenticare i prodotti di brand più blasonati
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming
Pannello QD-OLED da 32 pollici con risoluzione 4K, frequenza di aggiornamento a 240Hz e tempi di risposta rapidissimi: il Gigabyte MO32U24 evolve il progetto del suo predecessore MO32U e alza ulteriormente l'asticella delle prestazioni. È ancora una volta un monitor indirizzato ai giocatori più esigenti
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


NL-LC1 è il primo dissipatore a liquido AIO di Noctua: silenzio è la parola d'ordine NL-LC1 è il primo dissipatore a liquido A...
Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con Android 15 e penna, dal prezzo super Boox Go 10.3 (Gen II) Lumi: il tablet e-ink con ...
Gigabyte MO32U24 OLED: il 4K a 240Hz su un pannello OLED ideale per il gaming Gigabyte MO32U24 OLED: il 4K a 240Hz su un panne...
Recensione realme 16 5G: lo smartphone con Selfie Mirror ha una batteria da 6550mAh Recensione realme 16 5G: lo smartphone con Selfi...
Come rispettare tutte le nuove regole per i monopattini elettrici? La guida per non rischiare sanzioni Come rispettare tutte le nuove regole per i mono...
Rokarolla, il trojan Android che ruba cr...
Qwen-Robot Suite: la strategia di Alibab...
Threads raggiunge 500 milioni di utenti ...
Un chip nel cervello gli restituisce la ...
NVIDIA svela la tecnologia che trasforma...
iPhone del 20° anniversario e AirPods co...
Non solo Prime: ecco le 13 offerte su Am...
Xreal Aura apre le prenotazioni: gli occ...
Snap presenta i nuovi Specs: gli occhial...
Google rilascia Wear OS 7: basato su And...
Microsoft chiude la porta ai Surface da ...
Sedie gaming e da ufficio in offerta: a ...
Viltrox porta il suo 28mm f/4.5 pancake ...
Jensen Huang è andato a zappare l...
Prime Day in anticipo - giorno 3: ci son...
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:46.


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