지난 주 나는 내가하고있는 간단한 프로그램에 약간의 문제가 있었고 여기 누군가가 나를 도왔습니다. 이제 다른 문제가 생겼습니다. 가중치 확률과 값을 사용하여 배열의 항목 찾기
var findItem = function(desiredItem) {
var items = [
{ item: "rusty nail", probability: 0.25 },
{ item: "stone", probability: 0.23 },
{ item: "banana", probability: 0.20 },
{ item: "leaf", probability: 0.17 },
{ item: "mushroom", probability: 0.10 },
{ item: "diamond", probability: 0.05 }
];
var possible = items.some(({item, probability}) =>
item === desiredItem && probability > 0);
if (!possible) {
console.log('There is no chance you\'ll ever find a ' + desiredItem);
return;
}
var sum = items.reduce((sum, {item, probability}) => sum+probability, 0);
while (true) {
var value = Math.random() * sum;
var lootedItem = items.find(
({item, probability}) => (value -= probability) <= 0).item;
if (lootedItem === 'diamond') break;
console.log("Dang! A " + lootedItem + " was found...");
}
console.log("Lucky! A " + desiredItem + " was found!");
}
findItem('diamond');
items
배열에
category
라는 또 다른 값을 추가하여이를 확장하고 싶습니다 나는 현재이 코드가 있습니다. 카테고리의 값을
2
,
5
또는
10
으로 지정합니다. 따라서
diamond
항목이
category: 10
에 속하고
findItem
이 실행될 때 동일한 카테고리에 속한 항목 만 찾을 수 있다고 가정 해 봅시다. 나는 지금 이틀 동안 노력하고 있지만 내 머리를 감당할 수없는 것 같습니다. 어쩌면 누군가 나를 올바른 방향으로 밀어 넣을 수 있습니까? 사전에 감사
당신은 그 코드에이 업데이트를 사용할 수
검색을 주어진 카테고리로 제한하려면 ['filter'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)를 사용 하시겠습니까? –
"Dang!"메시지는 해당 카테고리에서만 발생할 수 있으며 다른 모든 항목은 완전히 무시되어야한다는 *을 발견 할 수 있습니까? – trincot
고마워요, 제가 살펴볼 것입니다! –