pour les en tête, autant utiliser les versions C++ (cstdlib et ctime, qui (très rarement) référence des versions différentes des fonction avec un comportement différent, mais "meilleur", d´autre part, les nom sont mis dans le namespace std (là encore, c´est malheureusement pas toujours le cas) et donc ça peut permettre d´éviter les conflit de nom.
Pour la fonction rand et srand et time, là je ne comprend pas. Si c´était du C, il n´y aurais pas de problème, vu que par hasard ces 3 fonctions prennent un int et renvoient un int, ce qui est le comportement par défaut d´une fonction inconnue en C à la compilation. Puis le linkage réussi, car ces fonctions existent avec le bon type (i.e. en fait c´est seulement la taille des arguments qui compte ici). Mais en C++ le compilo ne devrait pas accepter ça.
Pour les fonctions, les déclarer inline n´est pas très utile, surtout pour des fonctions aussi petite. Il es souvent préférable de laisser le compilo décider s´il faut ou non inliner des fonction (il y a des options de compilation pour ça), car il prend plus de chose en compte quand il le fait. Typiquement, un programme peut parfois avoir interet à être plus petit et donc à tenir dans le cache du processeur, plutôt que d´avoir plein de fonction inliné.
Bref, le compilo est meilleur que toi pour faire ce genre d´optim, donc sauf dans des cas particulier, il vaut mieux le laisser faire.