Generating random number without repetitions. Is my logic correct?

I wrote the following code i order to randomly choose a word from a given array of words without choosing the same word twice. (I want to choose only 4 words). After dry running the program and testing it, everything seems to be working fun and no duplicates where encountered, however I would like to have a second verification since I am new to programming.

char words[10][10] = {"dog", "cat", "horse", "cow", "goat", "monkey", "elephant", "crow", "fish", "snake"};

void getRandomWords()
{
    int i = 0, k = 0;

    srand((unsigned)time(NULL));
    n = rand() % 10;
    checkRandom[k] = n;
    k ++;

    for (int j = 0; j < 10; j ++) {
        printf("%c\n", words[n][j]);
    }

    do {
        n = rand() % 10;

        for (int t = 0; t < 4; t ++) {
            if (checkRandom[t] == n) {
                found = 1;
                break;
            }
            else
                found = 0;
        }

        if (found == 0) {
            checkRandom[k] = n;
            k ++;
            for (int j = 0; j < 10; j ++) {
                printf("%c\n", words[n][j]);
            }
            i++;
        }
    } while (i < 3);
}

Answers


You can use a variant of the Fisher-Yates shuffle algorithm to quickly produce a randomly-ordered sequence without duplicates. A slightly simplified version of the "inside-out" algorithm is:

void shuffle(int *array, int length) {
    int i, value;

    array[0] = 0;

    for (i = 1 ; i < length ; i++) {
        value = rand() % (i + 1);

        array[i] = array[value];
        array[value] = i;
    }
}

You could do something similar to generate a random array of integers, then use those integers to index your word array.


Need Your Help

Sticky Footer with dynamically added content

javascript jquery html css

I've been searching for quite a while and tried several different approaches, but can't figure out a solution.

iTunes Album Artwork path for iTunes 11.1.4+

macos itunes itunesartwork

I have an application that parses the iTunes library using the iTunes Library XML file generally found in the root of the iTunes library location. Finding the library is not an issue. The issue is ...