내가 같은 주어진 테이블의 기존 행 셔플 피셔 - 예이츠 shuffle을 사용하려면 : JQuery와의 약간의 도움으로피셔 - 예이츠 셔플 테이블 행
<table>
<tbody id="parent">
<tr id="node1">
<td>1</td>
<td>A</td>
</tr>
<tr id="node2">
<td>2</td>
<td>B</td>
</tr>
<tr id="node3">
<td>3</td>
<td>C</td>
</tr>
<tr id="node4">
<td>4</td>
<td>D</td>
</tr>
<tr id="node5">
<td>5</td>
<td>E</td>
</tr>
<tr id="node6">
<td>6</td>
<td>F</td>
</tr>
</tbody>
</table>
을, 나는 다음과 같은 한 :
var parent = $("#parent");
function shuffleRows(parent) {
var rows = parent.children();
for (var i = rows.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = rows[i];
rows.eq(i - 1).after(rows[j]);
rows.eq(j - 1).after(temp);
}
}
shuffleRows(parent);
동작하는 예제는 여기에 있습니다 : http://jsfiddle.net/98q9S/
그러나, 나는 위의 테스트로, 내가 도움이되지만 해당 행 A
다른 행보다 훨씬 더 자주 위 자리를 얻을 알 수 없습니다 s, 때로는 두 개의 연속 shuffle이 정확한 행 순서를 생성합니다.
내 구현에 문제가 있는지 궁금하거나 내 샘플 크기가 너무 작습니다.
코딩 된대로 마지막 행 교환의 확률은 1/6입니다. 첫 번째 행 교환의 확률은 5/6입니다. 그 (것)들을 전부 줍고, 뒤섞고, 그 후에 다시 적용하십시오, 반복은 필요하지 않았다. – dandavis