最有效的方法是什么?
如果随机数质量不是特别好,例如它只是基于输入的随机排序,例如早期终止不完整排序,我不介意。
上下文中,通过引入一些不精确性来实现几乎贪婪的搜索;这是在紧密循环中完成的,因此需要考虑排序和调用random()的速度。
我的当前代码是对其执行std::sort(这是C++),然后只在数组的早期部分进行非常短的洗牌:
for(int i=0; i<3; i++) // I know I have more than 6 elements
std::swap(order[i],order[i+rand()%3]);