Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- random_numbers_without_repeating.c
- Fills in the array with random numbers without repeating numbers.
- Necessary code lines to generate random numbers:
- #include<stdlib.h> // RAND_MAX is defined in stdlib.h
- #include<time.h> // for random number generator
- in function main() :
- int number;
- time_t t; // for random number generator
- // Intializes random number generator, should only be called once.
- srand((unsigned) time(&t));
- // function rand() returns an integer value between 0 and RAND_MAX.
- number = rand();
- // or
- number = rand() % 9 + 1; // generate random number between 1 and 9
- */
- #include<stdio.h>
- #include<stdlib.h> // RAND_MAX is defined in stdlib.h
- #include<time.h> // for random number generator
- #define ARRAY_SIZE 100
- // generate and return random integer number between lower and upper, including them.
- int get_random_integer_from_lower_to_uppper(int lower, int upper)
- {
- // generate and return random number between 0 and upper-1
- //return( rand() % upper );
- // generate and return random number between 1 and upper
- //return( rand() % upper + 1 );
- // generate and return random integer number between lower and upper
- return( (rand() % (upper - lower + 1)) + lower );
- } // get_random_integer_from_lower_to_uppper()
- // Returns unique random integer between lower and upper,
- // different from numbers in array[] of n integers
- int get_unique_number( int array[], int n, int lower, int upper )
- {
- int i, number, unique;
- if( (upper-lower)< n ) {
- printf("\n Can't find %d unique elements from %d numbers ! \n", n+1, upper-lower+1);
- exit(1);
- }
- if( lower >= upper ) {
- printf("\n Lower is greater than or equal than upper ! \n", n+1, upper-lower+1);
- exit(1);
- }
- while( 1 ) {
- i=0; // reset i
- unique = 1; // reset flag unique
- number = get_random_integer_from_lower_to_uppper(lower, upper);
- while( i<n && unique ) { // for all array elements, while unique!=0
- if( array[i] == number ) {
- unique = 0; // than number isn't unique in the array[]
- }
- i++; // move on to the next element of array[]
- } // while( i<n && unique )
- if( unique ) // if number is unique in array[]
- return number;
- else // if it isn't unique, get another random integer
- number = get_random_integer_from_lower_to_uppper(lower,upper);
- } // while(1)
- } // get_unique_number()
- int main(void)
- {
- int i, n=ARRAY_SIZE, min=1, max=32000;
- int array[ARRAY_SIZE]; // array for unique integers
- time_t t; // for random number generator
- // Intializes random number generator, should only be called once.
- srand((unsigned) time(&t));
- for(i=0; i<n; i++) {
- array[i] = get_unique_number( array, i, min, max );
- }
- printf("\n Array of %d random integers between %d and %d is: \n", n, min, max);
- for(i=0; i<n; i++) { // print array on screen, 13 in one line
- if( i%13==0)
- printf("\n");
- printf("%6d", array[i]);
- }
- printf("\n");
- return(0);
- } // main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement