Я пытаюсь написать программу, которая будет выбирать случайное слово из моего массива для палача, у меня есть следующий код. Без int n = rand() % 10; words = word1[n];
список кодов всех слов в словаре, с кодом crashses, есть ли другой способ достичь этого? Я хочу код, чтобы выбрать одно слово, MAX_WORDS
= 106184.Как перечислить случайное слово из массива
ответ
Если я получить код право, вы выходите из цикла while (wordIndex < MAX_WORDS)
когда wordIndex == MAX_WORDS
и вы return myWords[wordIndex];
который выключен предел индекса к 1.
Да, правильно, 'MAX_WORDS', сколько слов есть в словаре. – james
@james: как это может быть «правильно»? Вы понимаете, что это * является источником вашего исключения? Вы, вероятно, хотите вернуть случайное слово из всего списка (не считайте запутанное имя функции), поэтому возвращайте myWords [rand()% MAX_WORDS] -> GetWord(); ' – usr2564301
@james Почему вы удалили код из ур вопрос? И вы понимаете, что 'myWords [MAX_WORDS]' будет вне допустимого индекса массива, не так ли? – theAlias
Если RAND_MAX > MAX_WORDS
, то вы можете просто сделать:
Word* Dictionary::ListWord()
{
int n = rand() % MAX_WORDS;
return myWords[n];
}
пара подводных камней здесь, обратите внимание, что распределение rand() % MAX_WORDS
не совсем равномерная из-за к модулю оператора (более низкие значения несколько более вероятны), но он обычно достаточно близка к однородной, если по модулю мало относительно MAX_RAND.
Вторая важная проблема заключается в том, что rand() будет генерировать числа меньше, чем RAND_MAX, а на некоторой платформе RAND_MAX и RAND_MAX гарантированно будет больше 2^16, что меньше 106184. Чтобы избежать этой проблемы, если у вас относительно современный компилятор C++, вы можете использовать модуль <random>
из TR1, то есть http://en.cppreference.com/w/cpp/numeric/random. В старшем компиляторе вы также можете использовать произвольный модуль boost.
В противном случае, если вы застряли со старым компилятором, и вы не можете использовать ни случайную библиотеку TR1 или увеличить случайную библиотеку, это простые способы генерации больших случайных чисел:
// taken from: http://stackoverflow.com/a/7920941/309412
// this generates a random 64-bit integer
uint64_t rand64() {
return (((uint64_t) rand() << 0) & 0x000000000000FFFFull) |
(((uint64_t) rand() << 16) & 0x00000000FFFF0000ull) |
(((uint64_t) rand() << 32) & 0x0000FFFF00000000ull) |
(((uint64_t) rand() << 48) & 0xFFFF000000000000ull);
}
word1
является одно слово. word1[n]
- это n + 1'th письмо (C++ начинается с 0, word1[0]
- это первая буква). Поскольку n
является случайным, вы должны убедиться, что каждое слово имеет не менее 10 букв. Это так? Выбор десятой буквы "cat"
может привести к сбою.
Кроме того, вы никогда не выбираете 11-ю букву word1
. Это, вероятно, не преднамеренно. На самом деле, вы даже пытаетесь выбрать случайные буквы?
- 1. Случайное слово из списка массивов
- 2. Как напечатать случайное слово из массива строк? Java
- 3. Как сгенерировать случайное слово
- 4. Случайное слово из dictionnary GUI
- 5. Выберите случайное слово из списка?
- 6. AS3 Показать случайное слово из массива на этап
- 7. Я пытаюсь создать случайное слово из моего массива нажатием кнопки
- 8. Как отобразить случайное слово из набора?
- 9. Как выбрать случайное слово из txt-файла?
- 10. Как выбрать случайное английское слово из списка
- 11. Как получить случайное слово из строки?
- 12. Случайное значение из массива
- 13. Как перечислить слово с наибольшим счетом
- 14. случайное число из массива
- 15. Случайное число из массива
- 16. Случайное слово выбор
- 17. как выбрать случайное ключевое слово?
- 18. Случайное слово угадывание игры
- 19. Как получить случайное слово из данного списка слов
- 20. Случайное слово generator- Python
- 21. Замените последнее случайное слово
- 22. Android: Создать случайное слово из списка слов
- 23. Как читать случайное слово из .txt с помощью Java JFrame
- 24. Получение случайное слово из текстового файла
- 25. Случайное определение имени из массива
- 26. Выберите случайное значение из массива
- 27. Случайное целое число из массива
- 28. случайное изображение из массива PHP5
- 29. проводки случайное значение из массива
- 30. Как выбрать случайное место из 2D-массива?
что говорится в отчете о сбое? – ladislas
exeception: строковый индекс вне диапазона – james
@james: Я не совсем понимаю, что вы пытаетесь сделать здесь. Вы называете свою функцию ListAllWords, но вы говорите, что хотите выбрать случайное слово из массива, тогда ваша функция делает что-то совершенно иное, чем любое. Что вы на самом деле пытаетесь сделать? –