#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. Спасибо всем за ваш вклад. Это было действительно полезно.