Member 13587801 Ответов: 1

Как получить только одну случайную строку(или предложение) за один раз из группы строк(или предложений) случайным образом?


я пробую новую программу и мне нужна помощь от кого-то
я использую опцию rand для получения случайного текста или строки, но я в замешательстве.....

я хочу,чтобы в выводе из группы строк отображался только один случайный объект(или строка), а не все объекты(или предложения)



я много пробовал, но он просто перетасовывает все доступные слова случайным образом на каждом выходе
пожалуйста, помогите мне......
благодарный вам

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

я попробовал функцию rand, но она отображает все параметры просто случайным образом при каждом новом выходе


я хочу, чтобы на выходе отображался только один случайный объект из всех объектов................

jeron1

Вы должны опубликовать код, который вы пробовали. Функция rand() просто дает вам число и не имеет ничего общего с отображением чего-либо, ваша проблема, скорее всего, заключается в том, как ваш код использует это число.

Patrice T

Попробуйте показать свой код.

Member 13587801

#include <iostream>
#включить <windows.h>
#включить <ctime>

использование пространства имен std;

static const char alphanum[] =
-Минамейшарш"
"Харшисгуд бой"; // чарс нам нужен для поколения

int stringLength = sizeof(буквенно-цифровой) - 1;

чар genRandom(){

return alphanum[rand() % stringLength];
}

тап_п(){

SetConsoleTitle("генератор случайных текстовых строк");

srand(time(0));
std::string Str;

длина int = 0;

cout << "введите длину строки:" << endl;
Кин &ГТ;&ГТ; продолжительность;

for(unsigned int i = 0; i < length; ++i){
//соиь <&ЛТ; genRandom на << епси; // можно удалить // и через // по ул. += genRandom
Str += genRandom(); // все символы в genRandom будут скопированы в Str.
/ Я сделал это, потому что мне это было нужно для проекта.

}
cout << "это ваш случайный серийный номер:" << endl;
соиь <&л; Ул &ЛТ;< епси; ул. // держит так же, как genRandom поскольку все персонажи были скопированы. Вы можете закомментировать этот параметр с параметром // если вы используете соиь <&ЛТ; genRandom();



cout << endl;
система("пауза");
возвращает 0;
}






я попробовал этот код, но он просто смешивает все отдельные буквы. я хочу, чтобы эти два предложения отображались случайным образом, но только одно предложение или строка из этих двух в момент отображения...................................пожалуйста помогите

1 Ответов

Рейтинг:
0

CPallini

Попробуй

#include <iostream>
#include <utility>
#include <cstdlib>
#include <vector>
using namespace std;

int main()
{
  vector<string> vs;
  vs.push_back("alpha");
  vs.push_back("beta");
  vs.push_back("gamma");
  vs.push_back("delta");
  vs.push_back("epsilon");

  srand(time(NULL));
  size_t size = vs.size();
  for (size_t n=0; n<3; ++n)
  {
    size_t r = random() % (size-n);
      swap(vs[r+n], vs[n]);
  }

  for (size_t n=0; n<3; ++n)
  {
    cout << vs[n] << endl;
  }

}


Или (вам нужен современный компилятор)
#include <vector>
#include <random>
#include <algorithm>
#include <iostream>
using namespace std;

int main()
{
  vector<string> vs = {"alpha", "beta", "gamma", "delta", "epsilon"};

  mt19937 g(time(0));

  shuffle(vs.begin(), vs.end(), g);

  for (size_t n=0; n<3; ++n)
    cout << vs[n] << endl;
}


Member 13587801

#include <iostream>
#включить <windows.h>
#включить <ctime>

использование пространства имен std;

static const char alphanum[] =
-Минамейшарш"
"Харшисгуд бой"; // чарс нам нужен для поколения

int stringLength = sizeof(буквенно-цифровой) - 1;

чар genRandom(){

return alphanum[rand() % stringLength];
}

тап_п(){

SetConsoleTitle("генератор случайных текстовых строк");

srand(time(0));
std::string Str;

длина int = 0;

cout << "введите длину строки:" << endl;
Кин &ГТ;&ГТ; продолжительность;

for(unsigned int i = 0; i < length; ++i){
//соиь <&ЛТ; genRandom на << епси; // можно удалить // и через // по ул. += genRandom
Str += genRandom(); // все символы в genRandom будут скопированы в Str.
/ Я сделал это, потому что мне это было нужно для проекта.

}
cout << "это ваш случайный серийный номер:" << endl;
соиь <&л; Ул &ЛТ;< епси; ул. // держит так же, как genRandom поскольку все персонажи были скопированы. Вы можете закомментировать этот параметр с параметром // если вы используете соиь <&ЛТ; genRandom();



cout << endl;
система("пауза");
возвращает 0;
}






я попробовал этот код, но он просто смешивает все отдельные буквы. я хочу, чтобы эти два предложения отображались случайным образом, но только одно предложение или строка из этих двух в момент отображения...................................пожалуйста помогите