2013-02-14 3 views
0

내 질문은 프로그래밍 언어 이상으로 alghoritm과 관련되어 있으므로 어떤 언어 로든지 설명해주십시오.배열을 무작위로 2 번 섞기

배열이 있고 무작위로 임의로 섞고 싶습니다. 어쨌든 셔플은 당시 2 개의 요소가 있어야합니다. 그래서, 내가있는 경우 : 등

1 2 3 4 5 6 7 8 9 10 

1-2,3-4,5-6. 쌍은, 예를 들어, 선도 함께 단행해야 할 당신이 실제 배열의 절반 크기로 "셔플 배열을"보고있는 제외하고는, 일반 셔플과 동일합니다

3 4 7 8 9 10 1 2 5 6 
+0

그런 쌍을 어떻게 결정해야합니까? 그들은 항상 등을 맞댄이어야 하는가? –

+0

태그 기능을 적절하게 사용하십시오. 문제는 언어에 구애받지 않으며 임의의 태그를 포함해서는 안됩니다. – Femaref

+0

쌍을 어떻게 결정 하시겠습니까? 배열 길이가 이상한 경우에는 어떻게됩니까? – Femaref

답변

1

다음과 같습니다. 의미 1,2,3,4,5,6은 실제로 배열 1 2, 3 4, 5 6입니다.

여기 fisher yates하여 일부 psuedocode 같습니다

To shuffle an array a of n elements (indices 0..n-1) in pairs of 2: 
    for i from (n − 1)/2 downto 1 do 
     j ← random integer with 0 ≤ j ≤ i 
     exchange a[j * 2] and a[i * 2] 
     exchange a[j * 2 + 1] and a[i * 2 + 1] 
+0

고마워요! ;) – Phate

0

이 쌍 인덱스를 갖는 배열을 만들기 즉에서 다음 변경, 입력 배열보다 두 배 더 작은 배열을 사용 std::random_shuffle (C++에서) 사용하는 것이다 헬퍼 배열에 따른 원래의 배열.

관련 문제