Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.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++ 在int中反转n个不同的随机位_C++_Math_Random_Bit - Fatal编程技术网

C++ 在int中反转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 <

如何有效地反转无符号整数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 <= 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请添加相应的语言标记)。