我想製作一個隨機數發生器,用戶指定生成數字的範圍和數量。我希望它使每個數字都是唯一的(不重複)。這是我迄今爲止所做的(它產生,但其中一些重複,爲什麼?)我自己的隨機數發生器
#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'數字。另外,使用''而不是'rand()' –
Borgleader
2014-11-04 18:05:54
嗯。我想如果OP使用printf/scanf'std :: set'最有可能還沒有被覆蓋.. – drescherjm 2014-11-04 18:07:50
好的,但是你能告訴我爲什麼我的代碼不工作嗎?它應該這樣做。 – user3478487 2014-11-04 18:07:54