2016-10-10 1 views
2

자바 스크립트로 간단한 블랙 잭 게임을 코딩하는 중입니다. 이미 무작위로 선택할 수 인 Math.random를 사용하고 있기 때문에Javascript- Lodash shuffle vs. Math.Random()

var deal = function(){ 
    var card = Math.floor(Math.random() * deckArray.length); 
    return deckArray.splice(card,1)[0]; 
}; 

:이 같은 설정은 "거래"기능이

var deckArray = [ "card1", "card2",...,"card52" ] 

: 지금까지, 나는이 같은 배열을 deckArray, Lodash와 같은 "shuffle"함수를 이와 같이 통합하는 것은 불필요한 것입니까?

var shuffle = function(){ 
    deckArray = _.shuffle(deckNames); 
}; 
+0

어느 쪽이든 괜찮습니다. Btw, 배우면서 - 글로벌 변수 사용을 중단하고 갑판을 인수 함수의 인수로 전달하는 것이 좋은 습관입니다. – zerkms

+0

문자열을 사용한 카드 표현도 나쁘다. 문자열은 인간을위한 것이며 컴퓨터는 숫자를 사용합니다. –

답변

1

나는 그렇게 생각합니다. 실제 카드를 사용하여 갑판을 섞은 다음 갑판 상단에서 몇 장의 카드를 선택합니다. 이것은 셔플 (shuffle) 기능을 사용하여 실제 작업을 모델링하는 것입니다.

Math.Random()을 사용하면 임의로 셔플이 해제 된 덱에서 카드를 선택합니다. 여기서 핵심은 임의성입니다 (은 실제로 랜덤 btw가 아닙니다). 따라서 실제 사용 후에 모델링되지는 않지만 최종 결과는 동일합니다.

나는 _.shuffle (Fisher-Yates) 알고리즘을 사용하는 것보다 훨씬 빠르지 만, Math.Random()을 제안 할 것입니다.