Najlepiej zrobisz jeśli zostawisz rand-a i zajrzysz do biblioteki <random>.
Przykład:
std::mt19937 gen{std::time(0)};
std::uniform_int_distribution<int>{-x, x}(gen);
Jeśli druga linia wygląda dla ciebie nieco dziwnie, to masz tam utworzenie obiektu (między nawiasami klamrowymi jest lista argumentów dla konstruktora) i od razu zawołanie z niego operatora ().
edit: uh, nie zauważyłem, że chodziło ci o liczby zmiennoprzecinkowe. Anyway - łatwo to zmienisz zamieniając na std::uniform_real_distribution.