Честно говоря, все имеющиеся ответы не объясняют, что в их решениях произошли изменения в распределении (я предполагаю, что rand () следует за равномерным распределением! Исправьте меня, если я ошибаюсь, пожалуйста). Пожалуйста, используйте библиотеку, и я рекомендую использовать новые возможности в C ++ 0x:
#include <random>
#include <functional>
int main()
{
std::mt19937 generator;
std::uniform_real_distribution<float> uniform_distribution(-50.0, 50.0);
auto my_rand = std::bind(uniform_distribution, generator);
}
Если вы не можете, Boost - идеальный выбор. Таким образом, вы можете использовать my_rand () так же, как good ol 'rand ():
std::vector<float> random_numbers(1000);
std::generate(random_numbers.begin(), random_numbers.end(), my_rand);