Se connecter avec
S'enregistrer | Connectez-vous

Bruit blanc en C

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte
Expert Programmation

Euh, avant de te faire descendre en flammes par les modos, relis si tu veux bien les règles et pose une question à spectre un peu moins large : Oui, on peut sans doute d'aider mais pas à faire ton programme à ta place.

en fait, je me demandais comment générer un nombre aléatoire dans la loi uniforme, entre 0 et 1 : il faut utiliser une fonction random? Mais je ne sais pas comment ça fonctionne ni quelle librairie inclure pour l'utiliser.

bon, je vous explique en gros.
Y'a la fonction gengamma(alpha, beta), en matlab
j'ai recuppéré son code en matlab, mais facilement traduisible en C, hormis la fonction rand(a,b) qui donne au hasard un nombre dans une suite de nombres uniformément répartis sur [0,1]. Je cherche donc comment coder cette fonction en C.
Je recherche également la libraire où se trouvent les tan, cos, sin en C.
Merci beaucoup de votre aide!
Sophie

Quant au random, je me souviens plus très bien... ca fait longtemps que je n'ai pas fait de C, mais j'ai trouvé ça sur le net, ça devrait pouvoir t'aider :

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <time.h>
  4.  
  5. int main(void)
  6. {
  7. int i ;
  8. randomize() ;
  9. printf("Dix nombres aléatoires entre 0 et 99\n\n") ;
  10. for (i=0 ; i<10 ; i++)
  11. printf("%d\n",rand()%100);
  12. return 0 ;
  13. }


C'est l'instruction rand()%100 qui te renvoie un nombre entre 0 et 99, si tu le veux entre 0 et 1, divise le par 100.
Attention, tu es obligée de faire un randomize() avant d'utiliser la fonction rand.

En revanche, il me semblait qu'il fallait lui mettre un nombre en initialisation, et là je vois pas ça... Et pour pas avoir toujours la même chose, on l'initialisait avec l'heure... Mais là je sais plus... désolée... [:spamafote]
Expert Programmation

Pour initialiser, tu peux utiliser la fonction suivante :
  1. srand( (unsigned)time( NULL ) );
Pour créer un vrai bruit blanc, tu ne dois surtout pas faire un modulo sur rand(). Tu aurais un (très léger) décalage vers 0. (C'est très théorique, la différence est infinitésimale, mais c'est vrai)

Essaie plutôt :
  1. #include <stdlib.h>
  2. (float) rand() / RAND_MAX // Le résultat est alors dans l'intervalle [0; 1]
  3. (float) rand() / ( RAND_MAX + 1.0 ) // Le résultat est alors dans l'intervalle [0; 1[
Tu peux alors multiplier par la borne sup' qui t'intéresse.

(Tu vois qu'on peut d'aider avec une question précise :)  )
Expert Programmation

Citation :
Euh, avant de te faire descendre en flammes par les modos, relis si tu veux bien les règles et pose une question à spectre un peu moins large : Oui, on peut sans doute d'aider mais pas à faire ton programme à ta place.

Même punition pour fahesm !!!!

:hello:  c encore moi ,

Voilà une kestion simple (je pense :)  ) : comment générer ce bruit blanc dans une bande de largeur Fe [-Fe/2 ; Fe/2](fréquence d'échantillonnage) ?????

Càd ce code marqué là haut genère un bruit blanc en précisant le nb d'échantillons mais je veux générer ce signal dans une bande !!!!

Comment faire ????

Aidez moiiiiiiiiiiiii :bounce: 

Lassé par la pub ? Créez un compte