Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Roborock Qrevo Curv 2 Flow: ora lava con un rullo
Qrevo Curv 2 Flow è l'ultima novità di casa Roborock per la pulizia di casa: un robot completo, forte di un sistema di lavaggio dei pavimenti basato su rullo che si estende a seguire il profilo delle pareti abbinato ad un potente motore di aspirazione con doppia spazzola laterale
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite
Abbiamo guidato per diversi giorni la Alpine A290, la prima elettrica del nuovo corso della marca. Non è solo una Renault 5 sotto steroidi, ha una sua identità e vuole farsi guidare
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile
Abbiamo provato a fondo il nuovo Magic 8 Lite di HONOR, e per farlo siamo volati fino a Marrakech , dove abbiamo testato la resistenza di questo smartphone in ogni condizione possibile ed immaginabile. Il risultato? Uno smartphone praticamente indistruttibile e con un'autonomia davvero ottima. Ma c'è molto altro da sapere su Magic 8 Lite, ve lo raccontiamo in questa recensione completa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-06-2006, 09: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, 09: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, 09: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, 10: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, 10: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, 15: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, 16: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, 11: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, 12: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, 12: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, 13: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, 13: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, 13: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, 14: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, 14: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, 14: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 14:31.
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2006, 14: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, 14:34   #18
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16213
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, 14: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, 15: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


Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Recensione HONOR Magic 8 Lite: lo smartphone indistruttibile e instancabile Recensione HONOR Magic 8 Lite: lo smartphone ind...
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Pokémon Rosso Fuoco e Verde Fogli...
Risparmiare con le offerte Amazon: weeke...
Gli Xiaomi 17 arrivano a fine febbraio, ...
48.000 Pa a poco più di 100€: la ...
PC più potente, meno spesa: su Amazon to...
Con 2 acquisti si ottiene il 40% di scon...
Blocco VPN in Spagna durante le partite ...
ECOVACS DEEBOT T30C OMNI GEN2 torna a 34...
Cercate uno smartphone? Ecco 7 modelli i...
Paramount non molla: Netflix è pr...
Missione Artemis II diretta verso la Lun...
Toy Story 5 arriva al cinema: è l...
Intel cambia rotta su Linux? Nuove assun...
Samsung aggiorna Bixby con One UI 8.5: p...
L'Etiopia vieta le auto a combustione: a...
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: 11:52.


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