Рандомизирующие вопросы

#c

#c

Вопрос:

Я новичок в C и программировании в целом. Я работаю над простой игрой, и я хотел бы рандомизировать свои вопросы так, чтобы они были в другом порядке каждый раз, когда кто-то играет. Просто не уверен, как это сделать.Спасибо за любую помощь.

Комментарии:

1. Поместите вопросы в библиотечный контейнер ( std::vector вероятно, будет работать лучше всего) и запустите контейнер через std::shuffle .

2. Что вы пробовали до сих пор? Пожалуйста, поделитесь кодом.

3. пользователь4581301… Я изучил то, что вы предложили, чтобы посмотреть, могу ли я это понять, и я верю, что понимаю. Я просто не знаю, как бы я это сделал. Я новичок и не научился делать подобные вещи. Извините, что я такой новичок. Похож ли контейнер на функцию, которую я могу просто вызвать.

4. Talha… Я еще ничего не пробовал. Я поискал в Интернете и получил много разных способов. Я думал о генерации случайного числа, а затем с помощью переключателя вызывать каждый вопрос, но это было бы много случаев. И я бы не знал, как вызвать следующий вопрос. Еще раз, извините, что я такой новичок. Вероятно, это элементарный вопрос. Спасибо

5. Для этого вы можете использовать std::sample .

Ответ №1:

Для этого вы можете объединить свои вопросы и ответы в единую структуру, чтобы сохранить их вместе, а затем сохранить их в какой-либо структуре данных (например, std::vector ). Затем вы можете просто использовать std::shuffle для случайной перестановки их:

 // question and answer pairs
struct question_info
{
    std::string Q;
    std::string A;
};

// data structure to store your questions in memory
std::vector<question_info> questions;

// insert some questions (or load them from a file)
questions.push_back({"Why did the chicken cross the road?", "To get to the other side."});
questions.push_back({"Why did the fox cross the road?", "To eat the chicken."});
questions.push_back({"Why did the lemmings cross the road?", "The cliff was on the other side."});

// instantiate a pseudo random number generator
std::mt19937 prng{std::random_device{}()};

// randomly shuffle the questions
std::shuffle(std::begin(questions), std::end(questions), prng);

// print them
for(auto item: questions)
{
    std::cout << "Q: " << item.Q << 'n';
    std::cout << "A: " << item.A << 'n';
    std::cout << 'n';
}
  

Комментарии:

1. Спасибо всем за ваш вклад. Это было действительно полезно.