Я хочу создать генератор случайных чисел, в котором пользователь указывает диапазон и количество сгенерированных чисел. Я хочу, чтобы каждый номер был уникальным (без повторения). Это то, что я сделал до сих пор (он генерирует, но некоторые из них повторяются, почему?)
#include <time.h>
#include <stdio.h>
#include <windows.h>
#include <conio.h>
int main()
{
srand(time(NULL));
int start, stop, amount;
system("chcp 1250 >nul");
printf("Welcome to random number generator!\n");
printf("\nWhat range? \nFrom: "); scanf("%i", &start);
printf("To: "); scanf("%i", &stop);
printf("\nHow many numbers?: "); scanf("%i", &amount);
int number[amount];
for(int i=0; i<amount; i++)
{
number[i] = rand() % ((stop+1)-start) + start;
for(int j=i; j>-1; j--)
{
if(number[i]==number[j])
{
number[i] = rand() % ((stop+1)-start) + start;
}
}
printf("\n%i generated number: %i", i+1, number[i]);
Sleep(10);
}
getch();
}
std::set
, вставляйте в набор, пока в нем не будетamount
чисел. Также используйте<random>
вместоrand()
- person Borgleader   schedule 04.11.2014std::set
, скорее всего, это еще не было рассмотрено. - person drescherjm   schedule 04.11.2014j
наi-1
после переназначенияnumber[i]
. Кроме того, в нынешнем виде вы всегда выполняете одно повторное назначение, поскольку вы сравниваетеnumber[i] == number[j]
, когдаi
иj
равны,j
следует инициализировать доi-1
. - person IllusiveBrian   schedule 04.11.2014int number[amount]
. - person JorenHeit   schedule 04.11.2014