How to set random numbers to one dimensional array ([]) without duplicate (repetition) numbers in C

1 Answer

0 votes
#include <stdio.h>
#include <stdlib.h>
#include <time.h> 
#include <stdbool.h>

#define LEN 10

void print_array(int arr[]);

int main(void)
{
    int numbers[LEN] = { 1 };
	int r;
	bool dup;
     
    srand((unsigned)time(NULL));
     
	for (int i = 0; i < sizeof(numbers)/sizeof(numbers[0]); i++)
	{
		r = rand() % (10) + 1; // between 1 - 10
		
		for (int j = 0; j < sizeof(numbers)/sizeof(numbers[0]); j++)
        {
			if (numbers[j] != r)
				dup = false;
			else
			{
				dup = true;
				break;
            }
		}
		if (dup == false)
			numbers[i] = r;
		else
			i--; // start again and generate new number, instead the duplicate 
	}
	
	print_array(numbers);

    return 0;
}
void print_array(int arr[])
{
	for (int i = 0; i < LEN; i++)
		printf("%3d ", arr[i]);
}
   
    
/*
      
run:
      
  4   9   5   6   2  10   3   8   1   7

*/

 



answered Jan 30, 2016 by avibootz
...