c - My own random number generator -
c - My own random number generator -
i want create random number generator user specifies range , amount of generated numbers. want create every number unique (no repeat). i've done far (it generates of them repeat, why?)
#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 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(); }
your "check dupes" loop incorrect. might find duplicate, don't check if re-generated number exists in stuff tested.
e.g. consider array this. user asked 5 numbers, range 1-10
number[0] = 5 number[1] = 6 number[2] = 2 number[3] = 8
now you're working on number[4]. generate 2
... scan array backwards , find 2
dupe. generate new number... , generate 8
. don't reset j
loop - maintain working backwards, , never see 8
in array.
what should have more like:
for(int j=i; j>-1; j--) { if(number[i]==number[j]) { number[i] = rand() % ((stop+1)-start) + start; j = i; // reset loop } }
and note code can produce infinite loop. e.g. consider asking numbers in range 1-3, , generate 4 of them. 1,2,3,?
. status can never satisfied, because can't have 1-3 without @ to the lowest degree 1 repeat.
c random numbers generator
Comments
Post a Comment