Newsgroup: it.comp.lang.c
Titolo: funzione rand() in stdlib.h

Come si usa la funzione rand()?
da quello che ho capito non prende niente e restituisce un intero compreso 
tra 0 e 32768.
Quando però provo ad usarla mi restituisce sempre 41.
Sicuramente sono io che sbaglio qualcosa.
ma cosa?
riporto un piccolo esempio di programma che ho fatto:
#include <stdlib.h>
void main(){
    int r,n;
    float num;
    r=rand();
    num=r/32768;
    num=num*n;
    printf("%.0f",num);
}//fine main
può essere un problema di cast da intero a float?
o sbaglio ad usare printf()?
Oppure è la divisione il problema?
Purtroppo sono un po'viziato da Java e quindi ancora fatico a entrare 
nell'ottica di C. 

 Oppure č la divisione il problema?
E' normale che la funzione rand ritorni sempre lo stesso valore se la chiami
una volta sola e non inizializzi il "seme" con un valore diverso ogni volta.
Se fai invece una serie di chiamate consecutive della funzione rand (fai un
loop nel main) anche senza inizializzare il seme, vedrai che il valore
restituito cambia.
La funzione genera una sequenza di numeri pseudo-casuali secondo un proprio
algoritmo interno, quindi, se non viene cambiato il "seme" all'inizio,
genera sempre la stessa sequenza. Per impostare un nuovo seme devi usare la
funzione srand.
Non so dove gira il tuo SW, ma se gira su PC, puoi ad esempio leggere l'ora
del PC (che č in qualche modo random, il risultato dipende dall'istante in
cui esegui il SW), da questa ricavarti con una qualche semplice regola il
valore da usare per il seme e inizializzare cosě il seme. Quindi puoi usare
la rand chiamandola piů volte. La rand ora ti genera una sequenza di numeri
pseudo-casuali (diversa ad ogni esecuzione del tuo programma perchč ogni
volta all'inizio imposti un seme diverso).


Per avere diverse sequenze prova a dare un'occhiata alla funzione:
#include <stdlib.h>
void srand(unsigned int seed);
--
Giorgio Silvestri
DSP/Embedded/Real Time OS   Software Engineer

 ha scritto nel messaggio 
news:fZ%2h.28406$Fk1....@twister2.libero.it...


 Come si diventa DSP/Embedded/Real Time OS   Software Engineer?
OT {
    Beh, dove lavoro ho avuto modo di utilizzare diversi OS ed ambienti:
    (1) Processori DSP Texas Instruments C3x/C6x  [DSP]
    (2) "Board" sviluppate da miei colleghi "hardwaristi"  [Sistemi
Embedded]
    (3) OS Real Time come VxWorks-Tornado o LynxOS.  [RTOS]
    Ho utilizzato sempre il C standard o quasi.
    Anche un pò di assembler nei DSP per fare il sw di bootstrap.
    Si tratta di trovare una ditta che permetta di utilizzare questi
sistemi.
    Attualmente uso molto i DSP della famglia C6x.
}
Questo tipo di programmazione mette in risalto alcune problematiche
che non sempre vengono considerate o "sufficientemente" considerate.
Vedi l'uso di globali o macro o interrupt o altro.
In questi sistemi questo modo <sporco> di programmare
è più "tollerato".
Il problema di fondo è che si ha bisogno di grande
velocità oppure di sprecare pochissimo spazio.
O entrambi ...
Detto questo ... se unisci (1) + (2) + (3) + il fatto che
sono "programmatore" ecco che la mia firma diventa:


 Come si diventa DSP/Embedded/Real Time OS   Software Engineer?
sei per caso a padova? se sě tra quanto pensi di iniziare la tesi?
Se non la inizi a breve, penso che a fine luglio metterň fuori delle
tesi di compressione video su dsp DaVinci di TI.

 Se non la inizi a breve, penso che a fine luglio metterò fuori delle


 Come si diventa DSP/Embedded/Real Time OS   Software Engineer?
Lavorando molto su sistemi embedded ;-)  Battuta a parte la mia 
esperienza e` iniziata sviluppando sistemi hardware, poi sono passato a 
sviluppare i programmi diagnostici per le schede lavorando in PL/M.
In seguito sono passato a sviluppare software di ogni tipo sempre per 
sistemi embedded di tipo telefonico, che richiedevano principalmente 
funzionalità real-time.
Per questo tipo di lavoro ho programmato prevalentemente in C e (poco) 
in assembler.  Dalla mia esperienza direi che una buona conoscenza 
dell'hardware e dei sistemi sviluppo (cross developement) e` fondamentale.
Ciao
Giovanni
-- 
   A computer is like an air conditioner,
   it stops working when you open Windows.
   Registered Linux user #337974  < 
http://giovanni.homelinux.net/
 >

 ha scritto nel messaggio 
news:ejmiin$tqv$1...@milena.home.net.it...


 Se fosse una mia "migrazione" per la tesi sarei interessato.
la vedo dura da cosenza a padova. E purtroppo non conosco nessuno a
cosenza che lavori su dsp.
Purtroppo non riesco ad esserti di aiuto.