Newsgroup: it.comp.programmare.win32
Titolo: Generare un numero casuale tra "min" e "max"

Salve a tutti,
premetto che programmo in C, ma a parte questo dovrei generare un numero
compreso tra due valori, qualcuno sa dirmi la formula ? Sono troppo
stressato..... !!!
Dovrebbe essere qualcosa del genere :
num = min + rand() % max                 ///  Il problema è che mancano le
parentesi
Grazie  a tutti.
--
------------------------
Antonio Baldassarre
Alenia Marconi Systems - RT&O
Progettazione Software - Giugliano
Circumvallazione Esterna di Napoli
80014 Napoli
Tel: +39(81) 8180 476
e-mail: 
abalda...@amsjv.it
------------------------

 Grazie  a tutti.
Potrebbe andare cosě direi:
num = min + ( rand() & (max-min) );

 num = min + ( rand() & (max-min) );
ti e'scappato un & al posto del modulo :)
se vuoi includere gli estremi
num = min + ( rand() % (max-min+1) );
i.e. min=3 , max=10
rand%(10-3+1)=rand()%8 ossia un numero tra 0 e 7
quindi 3+(0...7)=(3...10)
 
ciao
Ermando

 
RAND( ) Function
Returns a random number between 0 and 1.
rand() restituisce da 0 a 1 compresi, quindi è giusto
 num = min + ( rand() * (max-min) )
se num deve essere un float.
Se invece num deve essere un integer bisogna usare una
funzione di arrotondamendo e non di troncamento.
In ogni caso non capisco perché ci hai messo un modulo
al posto del prodotto.
Ciao.
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Ermando
RAND( ) Function
Returns a random number between 0 and 1.
rand() restituisce da 0 a 1 compresi, quindi mi sembra giusto
 num = min + ( rand() * (max-min) )
se num deve essere un float.
Se invece num deve essere convertito in un integer
la cosa si fa più complicata.
Per dare a tutti gli interi la stessa probabilità credo
sia giusto come dici tu (max-min+1) e poi troncare.
Ma bisogna eliminare il caso (max +1), che può verificarsi,
ripetendo in tal caso l'estrazione.
In ogni caso non capisco perché ci hai messo un modulo
al posto del prodotto, mi sembra che
 rand() % 8
possa restituire solo 0 o 1. Inoltre modulo è un operatore
per interi e rand() è un float. Lasciare al compilatore la scelta
delle conversioni è un po' imprudente. 


 rand() restituisce da 0 a 1 compresi, quindi e` giusto
Cazzate. rand() ritorna un interno compreso tra 0 e RAND_MAX.
7.20.2.1 The rand function 
1 Synopsis 
#include <stdlib.h> 
int rand(void); 
2 Description
The rand function  computes a sequence of pseudo-random  integers in the
range 0 to RAND_MAX.
[cut]
5 Environmental limits
The value of the RAND_MAX macro shall be at least 32767.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
La differenza fra l'intelligenza e la stupidita`?
All'intelligenza c'e` un limite.

 Cazzate. rand() ritorna un interno compreso tra 0 e RAND_MAX.
Oops!, è vero. Ho guardato la RAND() di FoxPro.
Grazie. 


 ha scritto nel messaggio
news:a7nglt$d1r$1...@e3k.asi.ansaldo.it...


 wrote in message
news:%IMK8.115705$zW3.2...@news1.tin.it...


 writes:

Le FAQ di questo gruppo, al punto 12 ("Come posso generare numeri
casuali?") suggeriscono un metodo differente, e spiegano anche perche'
sia migliore di questo.
-- 
Maurizio Loreti                         
http://www.pd.infn.it/~loreti/mlo.html
Dept. of Physics, Univ. of Padova, Italy          loreti at pd dot infn dot it