Próbuję stworzyć funkcję która będzie generowała losowo (na ile to możliwe) imiona. Sprawa prosta, nie raz się to robiło. Jednak jest problem kiedy próbuje użyć std::vector
. Nie wiem co robię nie tak, ale rand()
uparcie zwraca mi maksymalną wartość. Zawsze. Rzućcie okiem na mój kod i powiedzcie czy widzicie błąd.
Employee generate_random_employee(Employee obj)
{
std::vector<std::string> male_names = {"Donald", "Piotr", "James", "Tiny", "Ricky"};
std::vector<std::string> female_names = {"Diana", "Joelle", "Sue", "Karolina"};
std::vector<std::string> lastnames = {"Lester", "Pound", "Park", "Ennis", "Duck",
"Tusk", "Disney", "Jurassic", "Looney-Warde" };
int sex = (rand() % 1) + 1; // zawsze zwraca 1
if (sex == 1)
{
obj.name = male_names[(rand() % 1) + (male_names.size() - 1)]; // zawsze zwraca 5
}
else
{
obj.name = female_names[(rand() % 1) + (female_names.size() - 1)];
}
obj.name += " " + lastnames[(rand() % 1) + (lastnames.size() - 1)]; // zawsze zwraca 9
obj.age = (rand() % 24) + 25; // ! działa dobrze !
return obj;
}
na stackoverflow znalazłem takie coś: http://stackoverflow.com/questions/3032726/rand-generating-the-same-number-even-with-srandtimenull-in-my-main
Jednak to mi nic nie pomogło. Może ktoś z was potrafi zinterpretować to co napisali na tym forum i udzielić konkretnej pomocy?
edit: oczywiście w mainie znajduje się srand(time(NULL));
, na samym początku i jest wywoływana tylko raz