Я нахожусь в процессе создания программы лотереи, и это моя функция рандомизации
#include <iostream>
#include <stdlib.h>
#include <time.h>// for seeding srand
#include <algorithm> //for std::find
#include <iterator> //for std::begin, std::end
using namespace std;
void rivinArvonta(int arvottuRivi[]){
int rivi[7];
int pallo = 41;
srand(time(NULL));
for (int i = 0; i < 7; i++) {
pallo = rand() % 40 + 1;
bool exists = (find(begin(rivi), end(rivi), pallo) != end(rivi));
if (exists == false) {
rivi[i] = pallo;
}else
i = i - 1;
}
sort(rivi, rivi + 7);
for (int i = 0; i < 7; i++){
arvottuRivi[i] = rivi[i];
}
}
Программа работает некоторое время l oop, пока я не скажу ей остановиться. Когда я в первый раз вызываю эту функцию, она возвращает что-то вроде:
5, 0, -164820691, 21983, 0, 0, -164820768
Во второй раз, когда я вызываю функцию, она работает так, как задумано.
Я не понимаю, как pallo = rand() % 40 + 1;
может вернуть что-то так много за пределы? Может ли это быть потому, что я использую g ++?
PS извините за то, что мои имена переменных в finni sh.