Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在C+中生成均匀随机二进制数成对计算汉明距离+;?_C++_Binary - Fatal编程技术网

C++ 如何在C+中生成均匀随机二进制数成对计算汉明距离+;?

C++ 如何在C+中生成均匀随机二进制数成对计算汉明距离+;?,c++,binary,C++,Binary,我想生成100个统一的随机8位二进制数,如下所示: 011111010、11011010、11100010、10111010 所以我可以两两计算汉明距离 我发现了许多重复的问题,但除了负面的观点,没有解决办法 我还发现了以下链接: 但它不会自动生成数字!我想生成二进制形式的数字,而不需要用户的输入 我知道有很多方法可以计算两个整数的汉明距离,但请注意,我想要二进制形式。您可以使用标准库中的统一整数分布。例如 #include <cstdint> #include <random

我想生成100个统一的随机8位二进制数,如下所示:

011111010、11011010、11100010、10111010

所以我可以两两计算汉明距离

我发现了许多重复的问题,但除了负面的观点,没有解决办法

我还发现了以下链接:

但它不会自动生成数字!我想生成二进制形式的数字,而不需要用户的输入


我知道有很多方法可以计算两个整数的汉明距离,但请注意,我想要二进制形式。

您可以使用标准库中的
统一整数分布。例如

#include <cstdint>
#include <random>

int main(){
  std::random_device rd;
  std::mt19937 eng(rd());
  std::uniform_int_distribution<> distr(0, 255);
  std::vector<std::uint8_t> nums(100);
  for (auto& i: nums) {
    i = static_cast<std::uint8_t>(distr(eng));
  }  
}
#包括
#包括
int main(){
std::随机_装置rd;
标准:mt19937英语(rd());
标准:统一分布(0255);
std::向量nums(100);
用于(自动和输入:nums){
i=静态(分布(英语));
}  
}

<矢量>代码> NUS有100个8位数字元素。

C++标准库有一个非常好的。谢谢,但是它不允许“Unt88t”在“MunsixIn分布”中!@Nicolas Bolas,除此之外,他们将不得不使用
无符号短字符
和向下转换。令人讨厌,但仍然不是问题。老实说,因为限制是0-255,我只会让它使用默认的
int
,而不在乎,演员阵容不会花费任何费用。