次の「スワップ」アクションがランダムに失敗するのはなぜですか?
int i,p,a[11] = {0,1,2,3,4,5,6,7,8,9,10 };
srand(time(0));
for (i=0;i<11;i++)
{
p = rand() % 11;
a[i] = a[i] ^ a[p];
a[p] = a[i] ^ a[p];
a[i] = a[i] ^ a[p];
}
この回答のロジックとそれほど違いはありません
。3/4の実行で機能し、0の複製を開始します。
CとC++で試してみましたが、同じ結果になりました
[編集]関連する行を
初期化p=0
して置き換えることで解決while (p==i) p = rand() % 11;
更新:使用しない理由 xor
(Mark Byersの回答とコメントを参照)