Originally Posted by
laserlight
It looks okay, though it may be easier to write:
Code:
void GetDrawNumbers(int total_nums, int drawnums[])
{
std::set<int> generated_nums;
for (int i = 0; i < total_nums; ++i)
{
int num;
do
{
num = rand() % MAXNUMS + 1;
}
while (!generated_nums.insert(num).second);
drawnums[i] = num;
}
}
You could shorten that further too:
Code:
void GetDrawNumbers(int total_nums, int drawnums[])
{
std::set<int> generated_nums;
while (generated_nums.size() < total_nums)
generated_nums.insert(rand() % MAXNUMS + 1);
std::copy(generated_nums.begin(), generated_nums.end(), drawnums);
}