Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart
Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart
Mentre Ubisoft vorrebbe chiedere agli utenti, all'occorrenza, di distruggere perfino le copie fisiche dei propri giochi, il movimento Stop Killing Games si sta battendo per preservare quella che l'Unione Europea ha già riconosciuto come una forma d'arte. Abbiamo avuto modo di parlare con Daniel Ondruska, portavoce dell'Iniziativa Europa volta a preservare la conservazione dei videogiochi
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
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: 936
[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: 936
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: 936
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: 936
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: 936
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: 936
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


Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart Intervista a Stop Killing Games: distruggere vid...
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...
Accordo commerciale UE-USA: dazi al 15%,...
Amazfit GTR 3 a 69€, il Pro a 99€,T-Rex ...
Stazione tutto in uno e i pavimenti li a...
Torna il re dei mini PC con AMD Ryzen 5 ...
RTX 5000 Laptop: ASUS svela tutti i dett...
Coupon e promo Amazon su 3 super portati...
La Cina pronta a sfidare NVIDIA? Le GPU ...
Samsung, mega accordo da 16,5 miliardi p...
Le 18 offerte Amazon del weekend, senza ...
Galaxy S25 Ultra 512GB sotto i 1.000€ su...
Vi piace l'iPhone nero? Su Amazon sono s...
MacBook Air M4 16GB/256GB e 16GB/512GB s...
4 portatili per risparmiare tanto ed ess...
San Marino multa TikTok: non controllano...
Dreame e Roborock in saldo su Amazon: ro...
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: 08:28.


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