Hi, I'm taking a university class in programming and I'm very new to C. C is my first programming language.

My current assignment is to generate a certain amount of numbers in sequence (i.e. 1-40 or 1-15 etc.) and then present them in random order in an array. Duplicates are NOT allowed.

The numbers are later to be used as starting numbers for athletes in a fictional skiing competition (maximum number of skiers are 47).

My code is working so so, but not all numbers are assigned to an athlete and I also get some skiers assigned with starting number 0 (zero is obviously not allowed as starting number).

Code:
#include <stdio.h>
#include <time.h>

int main(void)
{
 	int i, skier, random, num_skiers=10, found, startpos[46], pos, my_start_pos;

	srand(time(NULL));
		
	// empty the array

	for (i = 1; i <=num_skiers; i++) {
		startpos[i] = 0;
	}
	
	// go through the skiers

	for (skier = 1; skier <=num_skiers; skier++) {

		//generate a starting number for the skier

		my_start_pos = rand() % num_skiers + 1;
		
		// is this starting position already occupied? 

		if (startpos[my_start_pos] != 0) {

			// occupied, find me a new starting position

			do {
				my_start_pos = rand() % num_skiers + 1;
				if (startpos[my_start_pos] == 0) {
					found = 1;
				}
			} while (found !=1);
		}

		// assign this starting number to the skier

		startpos[my_start_pos] = skier;
	}
	
	for (pos = 1; pos <=num_skiers; pos++) {
		printf("Starting position %d is assigned to skier no. %d\n", pos, startpos[pos]);
	}

  return 0;
}
I bet there is easier way to do this and I'm open to everything, I just want to get past this obstacle

Any help is greatly appreciated!