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