Nick_is_asking Ответов: 1

Игра в C - задачу, чтобы получить 5 уникальных случайных чисел


Привет всем!!
Я делаю игру на языке Си (я не знаю названия на английском языке(я из Греции) ,может быть, висит или что-то подобное).Так или иначе, игрок должен угадать буквы слова.
Когда игрок дает слово,я прячу некоторые буквы (randmoly).Вначале я показываю 3 буквы.
Кроме того,если длина слова равна >= 9 и <= 13 ,я показываю 4 буквы.
Если длина слова равна > 13 , я показываю 5 букв.
Так, например ,если длина слова равна 15, я хочу получить 5 уникальных случайных позиций.(См. функцию random_pos (......), чтобы понять), но много раз я получаю числа в одной и той же позиции.
Пример Ан
Выход[^]

Сосредоточьтесь на функциях start_game() , main() и random_pos ().
Остальные не имеют значения для моей проблемы.

Итак,я хочу получить 3 ,4 или 5 случайных уникальных чисел(букв слова) в зависимости от длины слова, чтобы показать их на выходе.

Что я уже пробовал:

Мой полный код до сих пор:

КОД ИГРЫ[^]

Большое спасибо, ребята!!!!!

1 Ответов

Рейтинг:
0

OriginalGriff

Во-первых, я не собираюсь хватать копию всего вашего кода и рыться в нем в поисках нужных битов. Если вы хотите показать нам свой код, не ленитесь: скопируйте и вставьте соответствующие фрагменты и разместите их здесь в виде текста - используя виджет "код" для включения подсветки синтаксиса.

Затем объясните точно, что вы сделали и что произошло, чего вы не ожидали или не произошло, что вы сделали.

Возможно, вы еще не инициализировали генератор случайных чисел:

int main()
{
    srand(time(NULL));
//    ...
    return 0;
}

int numberOfDifferentValues = 5;
for (int i = 0; i < 10; i++)
   {
   int r = rand() % numberOfDifferentValues;
   printf("%u\n", r);
   }
Даст вам двадцать случайных значений от 0 до 4 включительно.
Если вы хотите, чтобы эти случайные значения были уникальными, то создайте массив, содержащий значения, которые вы можете использовать, и используйте случайное число для индексации этого массива (для десятибуквенного слова):
int numberOfDifferentValues = 5;
int valid[10] = {0, 1, 2, 3, 4, 5, 6, 7 , 8, 9};
int indexes = 10;
for (int i = 0; i < numberOfDifferentValues; i++)
   {
   int r = rand() % indexes;
   printf("%u\n", valid[r]);
   indexes--;
   valid[r]  = valid[indexes];
   }