문제

나는 가능한 조각이 담긴 가방이 있는 보드 게임을 코딩하고 있습니다.매 턴마다 플레이어는 특정 규칙에 따라 가방에서 무작위로 선택한 조각을 제거합니다.

내 구현에서는 처음에 가방을 한 명 이상의 플레이어를 위한 풀로 나누는 것이 더 쉬울 수 있습니다.이 풀은 무작위로 선택되지만 이제는 다른 플레이어가 다른 가방에서 선택하게 됩니다.이건 다른가요?

한 플레이어의 가방이 다 떨어지면 일반 비축물에서 무작위로 더 많은 가방을 섞습니다.

도움이 되었습니까?

해결책

오랫동안 :

  • "풀"가방으로의 파티션은 무작위입니다
  • 주어진 수영장 가방에 플레이어를 할당하는 것은 무작위입니다.
  • 게임은 플레이어가 그린 아이템이 가방에서 효과적으로 제거되는 것입니다 (현재 게임 기간 동안 가방 또는 다른 가방으로 돌아 오지 마십시오).
  • 플레이어는 내용을 인식하지 못합니다 어느 가방의

두 가지 접근 방식 ( "원래"하나의 큰 공통 가방이있는 "원본", 플레이어 당 하나의 수영장 가방이있는 "수정 된"은 확률과 관련이 있습니다.

플레이어의 가방 중 일부가 비어있을 때 게임이 끝날 때까지 약간 까다로워집니다. 여전히 작용중인 품목의 100%에서 선택할 수있는 가장 공정한 것은, 따라서 그들은 가방을 선택하고 물론 한 가방에서 하나의 아이템을 선택해야합니다.

이 문제는 확률의 흥미로운 특성을 보여줍니다. 확률은 상황에 대한 지식의 양과 관련이 있습니다.. 예를 들어, 게임 호스트는 플레이어 X에 할당 된 "풀"가방에 "A"(스크래블에 대한 생각)라는 글자 "A"라는 말이 포함되어 있지 않지만 플레이어가 이것을 모르는 한 (그리고 오랫동안 오랫동안) 수영장 가방으로의 파티션은 완전히 무작위였습니다), 게임은 공정하게 남아 있으며, 플레이어 "X"는 여전히 다음 편지가 그려 질 때 "A"를 때리는 것으로 가정해야합니다. 그에게 제공되었습니다.

편집하다:
두 절차가 완전히 동일하다는 주장의 수학적 타당성을 견딜 수 없음 지각 중요한 요소입니다 기회 구성 요소가 포함 된 게임에서 (특히 게임에 금전적 구성 요소가 포함 된 경우). 이 형평성을 이해하지 못하는 플레이어의 분노를 피하려면 원래 절차를 고수 할 수 있습니다 ...

다른 팁

게임 규칙에 따라 @MJV는 맞습니다. 초기 랜덤 부서는 확률에 영향을 미치지 않습니다. 이것은 N 플레이어가 얼굴 다운 데크에서 카드를 그리는 게임과 유사합니다. 데크의 초기 셔플은 각 플레이어의 카드의 "가방"으로 임의의 디비전입니다.

하지만 당신이라면 바꾸다 각 추첨 후 항목은 하나 또는 많은 가방이 있거나 많은 경우에 중요합니다. 하나의 가방을 사용하면 모든 특정 항목은 결국 동일한 확률을 가진 모든 플레이어가 그릴 것입니다. 가방이 많으면, 그 품목은 처음에 배치 된 가방을 가진 플레이어 만 그릴 수 있습니다.

소프트웨어 수준으로 팝업하면 게임이 단일 가방을 요구하는 경우 그런 식으로 프로그래밍하는 것이 좋습니다. N 백보다 더 어렵지 않아야하며 새로운 게임을 낡은.

내 직관은 무작위로 물건을 더 작은 임의의 하위 집합으로 나누는 것이 똑같이 무작위로 남아 있다고 말합니다. 플레이어가 큰 수영장이나 작은 수영장에서 선택하는지 여부는 중요하지 않습니다.

게임의 경우 충분한 임의의 IMHO입니다!

보안이 얼마나 중요한지에 따라 괜찮을 수도 있습니다(돈이 관련된 경우(귀하 또는 그들) 그렇게 하지 마십시오).무지한 플레이어의 관점에서 볼 때 그것이 덜 무작위적일지 완전히 확신할 수 없습니다.

a) 그들이 무지할 것이라고 기대하지 마십시오. 귀하의 프로그램이 깨질 수 있으며 그러면 그들은 어떤 조각이 나올지 알게 될 것입니다.

b) 취약점이 발생하지 않는 방식으로 가방을 채우는 것은 매우 까다로울 것입니다.예를 들어, 무작위로 하나를 선택하여 첫 번째 버킷에 넣고 꺼낸 다음 두 번째 버킷에 대해 동일한 작업을 수행하는 순진한 알고리즘을 사용해 보겠습니다.N개의 조각이 있는 경우 첫 번째 플레이어가 주어진 조각을 고를 확률이 1/N이고, 두 번째 플레이어가 1/(N-1)이고, 세 번째 플레이어가 1/(N-3)이고, 곧.그런 다음 플레이어는 다른 플레이어가 특정 조각을 보유하고 있을 확률을 파악하기 위해 이미 플레이된 조각을 분석할 수 있습니다.

생각하다 다음 알고리즘이 더 잘 작동할 수도 있지만 거의 모든 사람들이 새로운 알고리즘을 처음 생각해낼 때 확률이 틀릴 가능성이 높습니다.이것을 사용하지 마십시오. 단지 그것이 있다는 것을 이해하십시오. ~할 것 같다 내가 말한 보안 취약점을 다루십시오.

  1. N개의 주문 항목 목록을 생성하고 P 플레이어를 인스턴스화합니다.
  2. 각 플레이어에 대해 항목의 1/P를 무작위로(교체 포함) 표시합니다.
  3. 모든 N 항목이 표시되고 각 플레이어에 대해 동일한 수의 항목이 표시 될 때까지 반복적으로 수행하십시오 (참고 : 참고 :N과 P에 따라 당신이 사는 것보다 훨씬 더 오래 걸릴 수 있습니다)
  4. 플레이어의 버킷에 적절한 항목을 넣고 무작위로 재배열합니다(장소 교환 알고리즘을 사용하지 않음).

그럼에도 불구하고 누군가가 악용을 통해 자신의 버킷에 무엇이 있는지 파악하는 데 여전히 취약성이 있을 수 있습니다.결합된 풀을 고수하세요. 무작위로 선택하는 것은 여전히 ​​까다롭지만 인생이 더 쉬워질 것입니다.

편집하다:톤이 좀 이상하게 들린다는 걸 알아요.나는 이 내용을 맥락 없이 읽고 이러한 알고리즘 중 일부를 시도해 볼 수 있는 사람들을 위해 대부분 굵은 글씨를 포함했습니다.정말 잘되길 바라요 :-)

편집 2:좀 더 생각해 보면, 순서대로 고르는 문제가 애초에 플레이어가 차례대로 돌아가는 문제로 줄어들 수도 있다고 생각합니다.그것이 이미 규칙에 있다면 그것은 중요하지 않을 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top