我在使用C ++生成二进制随机数时遇到问题。我想创建一个数组,每个元素都包含二进制形式的随机数。我想要将XOR元素放在一起。这是我的代码
void Msg::setXOR(double Code)
{
int array[30];
srand ( time(0) );
for(int j = 0;j<30;j++)
{
i = rand();
array[j]=i
double x = array[j]^ array[j+1]^ array[J+2];
code = x ;
this -> code_var = code
}
}
它不起作用,它不会产生二进制随机数。任何人都可以帮我解决这个问题吗?
答案 0 :(得分:5)
std::default_random_engine generator;
std::uniform_int_distribution<int> distribution;
auto generatef = std::bind(distribution,generator);
std::array<int,30> array;
std::generate(array.begin(), array.end(), generatef);
double x = std::accumulate(array.begin(), array.end(), 0, std::bit_xor<>);
答案 1 :(得分:0)
您没有将生成的随机数存储在数组中。
int array[30];
srand ( time(0) );
int x=0;
for (int j = 0;j<30;j++)
{
array[j]=rand();
x ^= array[j];
}
return x;