Torna indietro   Hardware Upgrade Forum > Software > Programmazione

WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
Un mondo affollato e vivo, personaggi destinati a sparire a fine test e nessuno a inseguire l'oggetto giusto. Beta e stress test di World of Warcraft: Forever hanno fatto emergere un roleplay spontaneo, tra danze a Goldshire e code ordinate ai PNG
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA
In tre giorni a Las Vegas Oracle ha presentato agenti che eseguono il lavoro, l'alleanza con OpenAI e un cloud aperto agli acceleratori di tutti. Ma i clienti europei chiedono garanzie prima ancora delle funzionalità
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort
Fino a 740 km WLTP con la batteria da 97,2 kWh, sospensioni che leggono la strada con una telecamera e un abitacolo da salotto parigino. La nuova DS N°7 raccoglie l'eredità della DS 7 e la porta, per la prima volta, nel mondo 100% elettrico. Ecco come è fatta, cosa offre e quanto costa.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-01-2005, 15:49   #1
Misagi
Senior Member
 
Iscritto dal: Jun 2004
Città: Assisi
Messaggi: 1511
Random con C++

Salve, vorrei sapere se in questo modo ottengo numeri casuali da -1000 a 1000??
O se c'è un altro modo simile per farlo??

numero_casuale=(rand()%(2000+1))-1000;

Grazie
Misagi è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2005, 16:12   #2
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Questa ormai e' una FAQ
Chi si prende la briga di scriverla?

Codice:
		float FloatRand()
		{
			return rand() / (RAND_MAX + 1);
		}


		int IntRand(unsigned int range, int bias)
		{
			return (int) (range * frand()) + bias;
		}
		... 

		unsigned int x = IntRand(2000, -1000);
Questa e' la versione piu' C++ (ma puzza di overengineering):

Codice:
		class IntRand
		{
		public:
			IntRand(
				unsigned int	range,
				int		bias)
				: m_Range(range)
				, m_Bias(bias)
			{
			}

			unsigned int Generate(void)
			{
				float randomFloatValue = rand() / (RAND_MAX + 1);
				return (int) (m_Range * randomFloatValue) + m_Bias;
			}
			
		private:
			unsigned int	m_Range;
			int		m_Bias;			
		};

		...
		IntRand intRand(2000, -1000);		// da -1000 a +1000
		intRand.Generate();
Edit: Refactoring!

Ultima modifica di fek : 25-01-2005 alle 16:18.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2005, 16:12   #3
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16216
Cerca nei vecchi post.
Scoprirai non solo come si fa, ma anche il motivo per cui il metodo che tu suggerisci non è particolarmente consigliato.
__________________
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 25-01-2005, 17:32   #4
Ubi-Wan
Bannato
 
L'Avatar di Ubi-Wan
 
Iscritto dal: Jul 2004
Città: Tatooine
Messaggi: 506
Ziosilvio scommetto che non si ottiene una distribuzione uniforme se RAND_MAX non e' un multiplo di x per rand()%x!
Ubi-Wan è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2005, 18:05   #5
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16216
Quote:
Originariamente inviato da Ubi-Wan
Ziosilvio scommetto che non si ottiene una distribuzione uniforme se RAND_MAX non e' un multiplo di x per rand()%x!
Cerca nei vecchi post e non confondere RAND_MAX, che è il massimo valore ottenibile, con RAND_MAX+1 che è il numero di valori distinti ottenibili
__________________
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 25-01-2005, 18:07   #6
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16216
Uh uh... non me ne ero accorto subito...
Quote:
Originariamente inviato da fek
Codice:
float FloatRand()
{
	return rand() / (RAND_MAX + 1);
}
Questa funzione restituisce sempre 0.0 --- ESERCIZIO: dire perché.
__________________
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 25-01-2005, 19:48   #7
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da Ziosilvio
Uh uh... non me ne ero accorto subito...

Questa funzione restituisce sempre 0.0 --- ESERCIZIO: dire perché.
Perche' sono stupido e non l'ho castato a float...

Versione corretta:

Codice:
float FloatRand()
{
	return (float) rand() / (RAND_MAX + 1);
}
fek è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2005, 20:31   #8
Ubi-Wan
Bannato
 
L'Avatar di Ubi-Wan
 
Iscritto dal: Jul 2004
Città: Tatooine
Messaggi: 506
Quote:
Originariamente inviato da Ziosilvio
Cerca nei vecchi post e non confondere RAND_MAX, che è il massimo valore ottenibile, con RAND_MAX+1 che è il numero di valori distinti ottenibili
sapevo che c'era di sicuro qualcosa che non andava in quello che avevo scritto
Ubi-Wan è offline   Rispondi citando il messaggio o parte di esso
Old 26-01-2005, 12:23   #9
Misagi
Senior Member
 
Iscritto dal: Jun 2004
Città: Assisi
Messaggi: 1511
Grazie delle informazioni, volevo sapere se la parola bias ha qualche significato specifico o è solo una parola utilizzata a caso!
Misagi è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2005, 10:12   #10
Misagi
Senior Member
 
Iscritto dal: Jun 2004
Città: Assisi
Messaggi: 1511
Up
Misagi è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2005, 11:55   #11
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da Misagi
Grazie delle informazioni, volevo sapere se la parola bias ha qualche significato specifico o è solo una parola utilizzata a caso!
http://www.moreorless.net/diz/MoL_B.html

Quote:
bias = deviazione
fek è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2005, 15:17   #12
Banus
Senior Member
 
L'Avatar di Banus
 
Iscritto dal: Nov 2002
Città: Singularity
Messaggi: 894
Quote:
Originariamente inviato da Ziosilvio
Cerca nei vecchi post e non confondere RAND_MAX, che è il massimo valore ottenibile, con RAND_MAX+1 che è il numero di valori distinti ottenibili
Sembra una pignoleria ma non lo è affatto
Un po' di tempo fa ho scritto un algoritmo che generava automaticamente labirinti di grosse dimensioni, ma spesso mi capitava di avere una o due caselle "cannate". Dopo un lungo e intenso debug mi sono accorto che succedeva quando disgraziatamente ottenevo il risultato 1 dal random (1 volta su 30000 )
__________________
echo 'main(k){float r,i,j,x,y=-15;while(puts(""),y++<16)for(x=-39;x++<40;putchar(" .:-;!/>"[k&7])) for(k=0,r=x/20,i=y/8;j=r*r-i*i+.1, i=2*r*i+.6,j*j+i*i<11&&k++<111;r=j);}'&>jul.c;gcc -o jul jul.c;./jul |Only Connect| "To understand is to perceive patterns" Isaiah Berlin "People often speak of their faith, but act according to their instincts." Nietzsche - Bayesian Empirimancer - wizardry
Banus è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Recensione Samsung Galaxy Tab S12 Ultra: non chiamatelo tablet... è molto di più Recensione Samsung Galaxy Tab S12 Ultra: non chi...
Hyundai IONIQ 5 N, l'elettrica che finge di essere termica (e ci riesce da paura) Hyundai IONIQ 5 N, l'elettrica che finge di esse...
Schermi rotti su iPhone Duo: un report s...
Lo stealer VOLTA chiede a Claude, Kimi e...
Intel e Oracle puntano sulle CPU Xeon pe...
Offerte Amazon da urlo: Mac mini M6 a 89...
Bici elettriche a prezzi da record su Am...
Il boom dell'IA fa salire i costi: HP, A...
Cloudflare: 18,2 milioni di attacchi DDo...
GeForce RTX 2080 Ti con 22 GB di VRAM: f...
Dalla padella... ai server AI: Nvidia va...
1.000 cicli e ancora il 90,4% della capa...
SMS of Death fa crashare Android senza i...
BYD Yangwang U9 Xtreme da 2.977 CV fatta...
Altro che Made in USA: cosa si nasconde ...
Binance riapre dopo il maxi furto: gli u...
Ecovacs X12 OmniCyclone crolla a 599€ (p...
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:24.


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