经典的FisherYates看起来像这样:voidshuffle1(std::vector&vec){intn=vec.size();for(inti=n-1;i>0;--i){std::swap(vec[i],vec[rand()%(i+1)]);}}昨天,我错误地“向后”实现了迭代:voidshuffle2(std::vector&vec){intn=vec.size();for(inti=1;i这个版本比第一个版本更糟(或更好)吗?它会扭曲结果概率吗? 最佳答案 是的,假设rand()是均匀分布。我们将通过证明每个输入可以等概