C++ 在int中反转n个不同的随机位
如何有效地反转无符号整数x中的n位?每个位必须随机选取。而且它只能被采摘一次。x和返回结果之间的汉明距离必须等于n。有O(n)解吗C++ 在int中反转n个不同的随机位,c++,math,random,bit,C++,Math,Random,Bit,如何有效地反转无符号整数x中的n位?每个位必须随机选取。而且它只能被采摘一次。x和返回结果之间的汉明距离必须等于n。有O(n)解吗 // rnd_engine is kind of std::minstd_rand template< typename rnd_engine > unsigned int invert_bits( unsigned int x, unsigned int n, rnd_engine& rndEngine ) { assert( n <
// rnd_engine is kind of std::minstd_rand
template< typename rnd_engine >
unsigned int invert_bits( unsigned int x, unsigned int n, rnd_engine& rndEngine ) {
assert( n <= sizeof( x ) * 4 );
return // your ideas?
}
//rnd_引擎有点像std::minstd_rand
模板
无符号整数反转位(无符号整数x、无符号整数n、rnd_引擎和rnd引擎){
assert(n我将执行以下操作:[用任何函数替换randInt(n+1)
,该函数返回区间[0,n]
内的随机整数
定义一个位计数精确为n
的变量mask
:unsigned int mask=(1请添加相应的语言标记)。