2017-12-11 23 views
-3

ID는 주사위 게임을 만들고 싶지만 주사위의 임의성에 대해서는 몇 가지 질문이 있습니다. 가능한 경우 id는 실제와 동일한 임의성을 사용합니다. 응용 프로그램은 ios 용이며 Apple의 ar 키트를 사용하여 신속하게 코딩합니다. ID는 롤 알고리즘을 만드는 것이 더 좋을지 또는 사용자가 3D 주사위를 흔들도록해야하는지 (롤에 대한 물리 법칙에 의거)인지 알고 싶습니다. 다음 중 실제 임의성을 복제 할 수있는 것은?실물과 비슷한 주사위를 어떻게 프로그래밍 할 수 있습니까?

Thakns!

+0

롤에 대한 물리 법칙에 의존하는 것이 더 나은 선택 일 수 있습니다.이 질문은 SO 표준에서 수용하기에는 너무 광범위합니다. –

+0

@Vcxsta이 목적으로 난수 생성을 사용할 수 있습니다. 이 코드는 6보다 작은 난수를 제공 할 수 있습니다. diceRoll = Int (arc4random_uniform (6)) –

+1

물리적 인 주사위 굴림에 대한 * 실제 * 시뮬레이션 코드는 원하는 길이와 어려움 모두에서 게임 코드를 초과합니다 순서대로 쓰기 (초기 조건 설정시 의사 난수 생성기가 필요할 수도 있음). 내장 된 난수 생성기를 사용하기 만하면됩니다. 다른 것은 프로그래머 시간 낭비 일 것입니다. –

답변

3

주사위를 던지는 것과 같은 "실제 세계 임의성"은 "결과를 예측할 수있는 충분한 정보가 없음"을 의미합니다. 던지기의 정밀도, 기류의 영향, 그리고 주사위와 재료의 불순물을 포함시키기는 어렵습니다.

컴퓨터 프로그램 자체에서 같은 일이 발생하지 않을 수도 있습니다. 물리학에 관계없이 같은 입력 데이터를 사용하는 2 가지 상황에 대해 동일한 출력을 얻을 수 있습니다. 따라서 임의의 시점에서 무작위가 필요하거나 사용자 상호 작용이 필요합니다.

임의의 이벤트를 생성하기에 충분한 입력 데이터가 없을 수 있으므로 사용자 상호 작용을 위해 다시 문제가 발생할 수 있습니다. 예를 들어이 이벤트는 사용자가 화면에서 스 와이프 제스처를하는 것으로 시작됩니다. 이제이 특정 사용자는 제스처를 수행 할 때 항상 100 픽셀 드래그를하도록 교육합니다. 그는 완벽하게 성공하지는 못하지만 아직 이벤트를 시드하여 1/6 대신 자신의 가치를 던질 수있는 3/6의 기회를 얻을 수 있습니다.

결국 사용자 상호 작용이 충분히 랜덤해도 실수로 환경을 생성하여 균형을 이루고 일부 결과가 더 자주 발생할 수 있습니다.

하지만 모두가 완벽하고 완벽한 무작위로 생성하더라도 사용자는 만족하지 않을 수 있습니다. 완전한 무작위 시나리오에서 동일한 값을 연속으로 20 회 던지는 것과 같은 일이 발생할 수 있습니다. 또는 20 번 연속으로 필요한 값을 던지지 않을 수도 있습니다. 물리적으로 던지기 주사위를 던지면 문제가되지 않지만, 누군가가 응용 프로그램에서 그것을 도청하고 균형 잡힌 것이라고 주장한다면 ...

무작위는 일반적으로 큰 문제입니다. 우연히 만나는 것은 너무 중요합니다. 대부분은 다음 값을 예측하는 알고리즘을 찾을 수없는 일련의 정교하게 분산 된 값을 원합니다.

아무도 실제 임의성을 복제하지 않습니다. 사용자가 필요로하는 것에 따라 선택해야합니다.