vector<vector<bool>>
aを 0 と 1 でランダム化する最も簡単な方法は何ですか? オンラインで回答を見つけることができなかったので、該当する場合は参考にしていただければ幸いです。
ありがとうございました。
vector<vector<bool>>
aを 0 と 1 でランダム化する最も簡単な方法は何ですか? オンラインで回答を見つけることができなかったので、該当する場合は参考にしていただければ幸いです。
ありがとうございました。
#include <algorithm>
#include <iterator>
#include <iostream>
#include <ostream>
#include <cstdlib>
#include <vector>
using namespace std;
#define let const auto&
int main()
{
let size = 128;
let inner_size_max = 16;
vector<vector<bool>> vs(size);
for(auto &v : vs)
generate_n(back_inserter(v),rand()%inner_size_max,[]
{
return rand()%2==0;
});
for(let v : vs)
{
for(let b : v)
cout << b;
cout << endl;
}
}
個々の「行」を生成し、オンデマンドで完全な「マトリックス」を作成する再利用可能な関数を少し好みます。実行時間は他の回答とほぼ同じです(「ライブワークスペース」によって決定されます(実行時間は約0.1秒)
#include<iostream>
#include<vector>
#include<cstdlib>
#include<algorithm>
// this is a transparent, reusable function
template<size_t N>
std::vector<bool> generate_bits() {
std::vector<bool> bits;
bits.reserve(N);
for(size_t k=0; k<N; k++) {
bits.push_back(rand() % 2 == 0);
}
return stdbits; // rvo, or use std::move
}
int main() {
std::vector<std::vector<bool>> bits;
bits.resize(128);
std::generate(bits.begin(), bits.end(), generate_bits<16>);
// stole the cool printing statement
for(auto&& v : bits) {
for(auto&& b : v) {
std::cout<<b;
}
std::cout<<std::endl;
}
return 0;
}