Ok, merci beaucoup Chris ! Je bosse ça dans mon coin pour essayer de comprendre et je posterai les résultats
si tu code avec java ou python tu peux utiliser la fonction random gaussian de la lib standard.
avec python et random.gauss:
Ah oui, c'est tout à fait ce que je cherche à faire ! Mais je suis en C++, et je vais essayer de mettre en œuvre la formule de Chris
En c, les libs de R disposent de toutes les fonctions de generations don't tu peux avoir besoin.
Je ne sais pas ce que sont les libs de R ![]()
Ce R la (le logiciel de statistique)
http://www.r-project.org/
Ou sinon std::normal_distribution
godrik Voir le profil de godrik
Posté le 30 décembre 2012 à 05:33:59 Avertir un administrateur
En C la seule valeur par defaut possible est "whatever is in the memory".
Par contre, tu peux encapsuler ta structure pour que la seule facon de faire une instance est en appelant une fonction particuliere.
Ok merci ! Ca ressemble limite à de la programmation objet ![]()
"Ou sinon std::normal_distribution"
wow, je n'avais pas vu qu'ils avaient integre cette partie la de boost dans C++11. Il faut vraiment que je regarde la tete des nouvelles fonctions!
"Par contre, tu peux encapsuler ta structure pour que la seule facon de faire une instance est en appelant une fonction particuliere."
"Ok merci ! Ca ressemble limite à de la programmation objet"
Bah c'est par ce que ca en est ![]()
Ce n'est pas parceque tu fais du C que tu ne peux pas faire de programmation oriente objet.
L'oriente objet est une facon de programmer, pas une propriete des langages. La plupart des langages qui supportent la programmation procedurale supportent egalement la programmation oriente objet. La syntaxe n'est pas aussi agreable, mais dans le fond c'est pareil.
J'ignorais aussi qu'ils avaient ajouter du support pour les probas dans la lib standard du C++.
godrik: ahma, c'est violent d'invoquer R pour ne pas se taper un code de 10 lignes. ![]()
godrik, ok je saisis bien
Autre petite question, j'ai pris pour habitude de respecter la norme ANSI (C90)
Mon livre parle à la fin de la norme C99, je ferais mieux d'éviter cette norme ?
J'ai comme l'impression que je vais me faire hachage menu (jeu de mot de piètre qualité, je sais...) si je l'utilise ![]()
Chris : c'est ce que je me disais ![]()
C99 est plus confortable a utiliser que C90. Ca m'etonnerait que tu rencontres un compilateur qui ne supporte pas C99 de nos jours.
Et dans la pratique, au niveau professionnel vous utilisez cette norme, ou ça dépends des exigences ?
Ca depend surtout des compilateurs. Les gens qui programme en C ont parfois des contraintes liee a un compilateurs particulier. En pratique, je n'ecris pas beaucoup de code C. J'ecris surtout du C++, tous les projets que j'initie sont ecrit en C++. Mais parfois ca m'arrive d'ecrire du code dans un projet exterieur, auquel cas, je me conforme a la norme de C utilise par ce projet. Par exemple, j'ai contribuer a Zoltan [1] qui (de memoire) est ecrit en C90. Si j'avais besoin de faire un projet C, j'utiliserit probablement C11 [2]. (Oui, il y a un C11 qui a ete publie principalement dans le but d'ameliorer la compatibilite entre C++ et C.)
[1] http://www.cs.sandia.gov/Zoltan/Zoltan.html
[2] http://en.wikipedia.org/wiki/C11_%28C_standard_revision%29
Salut, j'ai une question : j'ai fait un makefile qui créé une library à partir de 3 fichiers : deux .c et un .h
Le truc, c'est que mes fichiers C appellent mon header avec les '<' et '>' et pas avec les guillemets (genre #include <header.h>)
Le truc c'est que notre prof VEUT qu'on utilise cette méthode, pour un question de rigueur. Mais l'autre truc, c'est que avec cette méthode, on doit faire "export LD_LIBRARY_PATH=.:{LD_LIBRARY_PATH}" à chaque fois qu'on ouvre le terminal, sinon le programme marche pas.
J'ai une question : serait-il possible de faire faire cette ligne par le makefile automatiquement, et si oui comment ?
VampireGirl: j'ai tendance à ne pas trop me soucier des normes personnellement. La plupart du temps, le code n'est ni gros, ni critique, ni partager entre des milliers de personnes. Du coup, ça suffit de faire "juste" du C.
Calmacil:
« Le truc c'est que notre prof VEUT qu'on utilise cette méthode, pour un question de rigueur. »
bah il ferait mieux d'apprendre ce que ça veut dire la rigueur. Les .h qui viennent de ton propre code source, on les inclut entre " dans la vraie vie.
Sinon, au lieu de hacker ton LD_LIBRARY_PATH, ce qui est fondamentalement ****MAL****, tu peux mettre dans ton makefile un truc du genre :
SRC = toto.c titi.c main.c (attention, l'ordre va compter ici)
OBJ = $(SRC:.c=.o)
CC = ......
CFLAGS = -I. -Wall -Wextra -O2
LIBS = -L. ........ (mettre aussi les -lmachin nécessaires ici)
%.o: %.c
$CC $CFLAGS -c $^ -o $@
all: main
main: $OBJ
$CC $CFLAGS $LIBS $^ -o $@
(wapfff la police en carton mâché)
Dans CFLAGS, c'est un "moins" "i majuscule" "point".
(Et dans LIBS c'est un "moins" "L majuscule" "point".)
Je te renvoie à la documentation de ton compilateur pour voir ce que font ces options.
Concrètement, ce que tu m'as mit dans tes messages plus haut fait quoi ? Il lie le programme créé à la library ?
En gros, ça fait comme si le répertoire courant faisait partie de la bibliothèque standard.
Mais comme je l'ai dit, va lire la documentation de ton compilateur pour avoir les détails. Ça c'est un boulot que personne ne pourra faire pour toi.
PS: on ne dit pas library, mais bibliothèque (ou librairie).