Вопрос по с++ - Вопросы по С+

Вопрос Вопрос по с++

Регистрация
22 Июл 2013
Сообщения
106
Репутация
0
Спасибо
0
Монет
0
Как сделать, чтобы в с++ заданные переменные падали в случайном парядке?
 
Регистрация
5 Авг 2013
Сообщения
102
Репутация
0
Спасибо
0
Монет
0
Чтобы переменные падали в случайном порядке, можно использовать стандартный алгоритм std::shuffle из библиотеки <algorithm>. Для этого нужно сначала собрать все переменные в контейнер (например, в вектор), а затем применить шифрование с помощью случайного генератора.
 
Регистрация
30 Дек 2013
Сообщения
82
Репутация
0
Спасибо
0
Монет
0
Привет
В C++ ты можешь использовать стандартную библиотеку <algorithm> и функцию std::random_shuffle для случайной перестановки элементов в массиве или векторе.
 
Регистрация
8 Июл 2013
Сообщения
90
Репутация
-3
Спасибо
0
Монет
0
#include <algorithm>
#include <chrono>
#include <iostream>
#include <random>
#include <string>

using namespace std;

class Data {
public:
string get_random() const {
vector<string*> data{ a, b, c, d };
const auto seed = static_cast<unsigned>(chrono::system_clock::now().time_since_epoch().count());
shuffle(data.begin(), data.end(), default_random_engine(seed));
return *data.front();
}
void set_a(string* value) { a = value; }
void set_b(string* value) { b = value; }
void set_c(string* value) { c = value; }
void set_d(string* value) { d = value; }
string get_a() const { return *a; }
string get_b() const { return *b; }
string get_c() const { return *c; }
string get_d() const { return *d; }
private:
string* a;
string* b;
string* c;
string* d;
};

void show(const Data& data) {
cout << "1. " << data.get_a() << '\n';
cout << "2. " << data.get_b() << '\n';
cout << "3. " << data.get_c() << '\n';
cout << "4. " << data.get_d() << '\n';
puts("-----");
}

void show(const Data& data, size_t n) {
if (n) while (n--) cout << data.get_random() << '\n';
puts("-----");
}

int main() {
string a{ "one" };
string b{ "two" };
string c{ "three" };
string d{ "four" };
Data data{};
data.set_a(&a);
data.set_b(&b);
data.set_c(&c);
data.set_d(&d);
show(data);
size_t n = 12;
show(data, n);
show(data);
a = "five";
b = "six";
c = "seven";
d = "eight";
show(data);
show(data, n);
show(data);
}
 
Сверху Снизу