Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione
Abbiamo provato il nuovo Galaxy S25 Edge, uno smartphone unico per il suo spessore di soli 5,8 mm e un peso super piuma. Parliamo di un device che ha pro e contro, ma sicuramente si differenzia dalla massa per la sua portabilità, ma non senza qualche compromesso. Ecco la nostra prova completa.
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto
Pensato per il professionista sempre in movimento, HP Elitebook Ultra G1i 14 abbina una piattaforma Intel Core Ultra 7 ad una costruzione robusta, riuscendo a mantenere un peso contenuto e una facile trasportabilità. Ottime prestazioni per gli ambiti di produttività personale con un'autonomia lontano dalla presa di corrente che permette di lavorare per tutta la giornata
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso
Basato su piattaforma Qualcomm Snapdragon X Plus a 8 core, il nuovo Microsoft Surface Pro 12 è un notebook 2 in 1 molto compatto che punta sulla facilità di trasporto, sulla flessibilità d'uso nelle differenti configurazioni, sul funzionamento senza ventola e sull'ampia autonomia lontano dalla presa di corrente
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-06-2006, 08:32   #1
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 823
[C++] Generare un numero random

come si fa a generare un numero random in C++? quali file si devono includere?
Grazie in anticipo
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2006, 08:45   #2
Andlea
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 357
Codice:
#include <time.h>

srand(time(NULL));
a=rand()%range;
range è un numero positivo, che determina il range in cui il numero viene creato
La funzione restituisce un int tra 0 e range
Codice:
rand()%range-range;  // Numeri negativi
rand()%range-range/2;   // Numeri positivi e negativi nell'intorno di 0 con massimo in range/2
ecc...
Andlea è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2006, 08:50   #3
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 823
grazie.
che significa
srand(time(null)); ?
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2006, 09:07   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da AngeL)
che significa
srand(time(null)); ?
srand serve per impostare il "seme" per la generazione della sequenza di numeri pseudo-casuali. Passando alla srand la data/ora corrente, si imposta in questo modo un "buon" seme "casuale".
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2006, 09:12   #5
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 823
grazie a tutti e due gli andrea
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2006, 14:56   #6
midget
Senior Member
 
Iscritto dal: Feb 2001
Città: Firenze
Messaggi: 516
In questa pagina (http://members.cox.net/srice1/random/crandom.html) ci sono delle precisazioni molto interessanti per ottenere un numero casuale in maniera corretta.

In particolare si sottolinea questo:
Quote:
Do NOT use
y = rand() % M;
Ciao
midget è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2006, 15:47   #7
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da midget
In questa pagina (http://members.cox.net/srice1/random/crandom.html) ci sono delle precisazioni molto interessanti per ottenere un numero casuale in maniera corretta.

In particolare si sottolinea questo:


Ciao
e perché mai ???
io come al solito ho: Accesso negato
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 10:43   #8
midget
Senior Member
 
Iscritto dal: Feb 2001
Città: Firenze
Messaggi: 516
Quella pagina lo spiega in modo esauriente, a me funziona, ho appena provato.

Comunque in sintesi facendo il modulo si ottiene una correlazione tra il numero generato con solo i bit inferiori restituiti da rand() che "generalmente" sono molto meno casuali dei bit superiori. Ovviamente e' possibile che la specifica implementazione di rand() delle librerie che si vanno ad utilizzare abbia un comportamento diverso (eventualmente migliore).
Le formule indicate nella pagina citata servono per essere sicuri di utilizzare comunque tutti i bit generati da rand() a prescindere dall'implementazione.

Ciao
midget è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 11:07   #9
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da midget
Quella pagina lo spiega in modo esauriente, a me funziona, ho appena provato.

Comunque in sintesi facendo il modulo si ottiene una correlazione tra il numero generato con solo i bit inferiori restituiti da rand() che "generalmente" sono molto meno casuali dei bit superiori. Ovviamente e' possibile che la specifica implementazione di rand() delle librerie che si vanno ad utilizzare abbia un comportamento diverso (eventualmente migliore).
Le formule indicate nella pagina citata servono per essere sicuri di utilizzare comunque tutti i bit generati da rand() a prescindere dall'implementazione.

Ciao
come fai a dire che a te funziona ?
se i bit inferiori sono meno casuali avrai una differenza sul numero di probabilitá
che riesca un dato numero. Non la totale assenza di quel numero.
O forse ho capito male ?
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 11:46   #10
midget
Senior Member
 
Iscritto dal: Feb 2001
Città: Firenze
Messaggi: 516
Quote:
Originariamente inviato da trallallero
come fai a dire che a te funziona ?
Mi riferivo alla pagina web, avevo capito che ti dava accesso negato.
I suggerimenti dati a quella pagina li ho gia' applicati con successo diverse volte.

Quote:
Originariamente inviato da trallallero
se i bit inferiori sono meno casuali avrai una differenza sul numero di probabilitá
che riesca un dato numero. Non la totale assenza di quel numero.
Si infatti, avrai un numero casuale meno "buono".

Questo pero' e' un punto fondamentale e da non trascurare quando si utilizzano numeri casuali in applicazioni in ambito sicurezza.

Analogamente se servono numeri casuali per la generazioni di "eventi" per testare un qualche tipo di procedura o algoritmo o altro, se i numeri generati non sono sufficientemente "buoni", tutta la procedura di test o di misurazione potrebbe risultare invalidata.

Sempre nella stessa pagina vengono fatti notare anche alcuni rischi di overflow da tenere presenti e risolvibili con alcuni cast espliciti.

Ciao
midget è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 12:11   #11
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da midget
Mi riferivo alla pagina web, avevo capito che ti dava accesso negato.
ah, avevo capito male

Comunque ho fatto un programmino di test su numeri da 0 a 9, 1000 volte e sembra tutto ok.
Codice:
Mat[0]: <97>
Mat[1]: <100>
Mat[2]: <96>
Mat[3]: <99>
Mat[4]: <101>
Mat[5]: <107>
Mat[6]: <82>
Mat[7]: <113>
Mat[8]: <110>
Mat[9]: <95>
tutti intorno alle 100 volte. Se fossero stati tutti 100 volte precise mi sarei preoccupato

ciao
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 12:48   #12
midget
Senior Member
 
Iscritto dal: Feb 2001
Città: Firenze
Messaggi: 516
Controlla anche in che sequenza ti escono i numeri, potrebbe avere delle periodicita'' che con il tuo test non vedi (su quel sito dice che potrebbero uscire alternati pari-dispari)

Ciao
midget è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 12:50   #13
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 823
alcuni usano
#define RAND_MAX 50
x = rand();

(non so se funziona)
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 13:02   #14
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da AngeL)
alcuni usano
#define RAND_MAX 50
x = rand();
No, RAND_MAX non lo puoi definire tu ... è una costante dichiarata nell'include stdlib.h ed è comunque "cablato" all'interno della rand().
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 13:05   #15
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da andbin
No, RAND_MAX non lo puoi definire tu ... è una costante dichiarata nell'include stdlib.h ed è comunque "cablato" all'interno della rand().
"cablato" ? cioé
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 13:28   #16
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da trallallero
"cablato" ? cioé
La funzione rand() usa certamente al suo interno il valore di RAND_MAX .... quindi il valore è "cablato" nel suo codice!

EDIT: alt, bisogna anche vedere come è stata implementata la rand()!!!
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)

Ultima modifica di andbin : 29-06-2006 alle 13:31.
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 13:30   #17
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 823
un mio amico mi ha dato un codice con rand_max che effettivamente faceva restituire a rand un valore entro rand_max...
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 13:34   #18
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16211
Quote:
Originariamente inviato da AngeL)
come si fa a generare un numero random in C++?
Si consulta questa guida

E se si hanno idee, suggerimenti, avvisi, lamentele ecc., si è i benvenuti
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" Chi scherza col fuoco si brucia.
Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici
REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 13:41   #19
AngeL)
Senior Member
 
L'Avatar di AngeL)
 
Iscritto dal: May 2006
Città: Salerno
Messaggi: 823
oops
AngeL) è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 14:02   #20
trallallero
Senior Member
 
L'Avatar di trallallero
 
Iscritto dal: May 2006
Città: Wursteland
Messaggi: 1749
Quote:
Originariamente inviato da andbin
La funzione rand() usa certamente al suo interno il valore di RAND_MAX .... quindi il valore è "cablato" nel suo codice!
vabbé non é quello che impedisce la ridefinizione di RAND_MAX. Pensavo intendessi qualcos'altro

Ci ho provato (#define RAND_MAX 10) mi da giustamente un warning sulla define
ma poi non me la caga proprio
Non mi considera proprio
__________________
Nintendo WIII 4d Turbo Intercooler - Sestium X 666 99,312 GHz - 6.984 Ram Σ(9999) MHz - HDD SATA 97e^(10) bytes 93³ rpm - ATI biberon X900z Mb - Win Eight SP (1 > yours) 16 Valve
trallallero è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione Samsung Galaxy S25 Edge: il top di gamma ultraso...
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto HP Elitebook Ultra G1i 14 è il notebook c...
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso Microsoft Surface Pro 12 è il 2 in 1 pi&u...
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet! Recensione REDMAGIC Astra Gaming Tablet: che spe...
Dopo un mese, e 50 foto, cosa abbiamo capito della nuova Nintendo Switch 2 Dopo un mese, e 50 foto, cosa abbiamo capito del...
Alchimia? No, scienza: ecco come produrr...
Il CISPE chiede di annullare l'acquisizi...
La Now Bar supporterà il doppio d...
Vecchi Bitcoin, guadagno mostruoso: bale...
Nel 2018 Samsung snobbò NVIDIA: u...
Provare i vestiti senza mai uscire di ca...
SanDisk High Bandwidth Flash (HBF): un c...
Panasonic presenta Aquarea DHW, pompa di...
Il bracciale Meta leggerà i gesti...
iOS e Android sotto attacco: per l'antit...
A Verona dopo i monopattini ecco le e-bi...
Itch.io come Steam: al bando i giochi pe...
Digitalizzazione, identità e AI: ...
Kindle Colorsoft: arriva la versione da ...
Electra ottiene altri 433 milioni di eur...
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: 18:08.


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