正直なところ仕様がふわふわしすぎているので正解なんてないと思います。が、私なりにこれは「モンスターが落とすドロップアイテムの仕組み」なのではないかと解釈して、こうまとめました。
- モンスターが落とすアイテムの種類が9種類ある
- モンスターは同時に最大2個しかアイテムを落とさない
- 9種類のアイテムにはそれぞれ「落ちるか落ちないか」の確率が設定されている
- 1匹倒すごとに9種類のアイテムそれぞれが「落ちるか落ちないか」の判定がされる
- 3種類以上当たってしまった場合、「もともと設定されている確率が一番高いもの」が優先的に1個確定し、もう1個は?????
このもう1個の部分をどうするかがいまのところはっきりしていませんので、単純に等分の確率で選べばいいのではないでしょうか。
https://jsfiddle.net/2zo2s8g0/1/
HTML
1<button id="lotteryButton">
2抽選
3</button>
4<h3>
5ひとまず全部抽選
6</h3>
7<div id="pickups">
8
9</div>
10<h3>
11優先度によって2個まで削減したもの
12</h3>
13<div id="output">
14
15</div>
JavaScript
1var table = [
2 {categoryName:"category1", percentage:70, value:"あいうえお"},
3 {categoryName:"category2", percentage:70, value:"かきくけこ"},
4 {categoryName:"category3", percentage:50, value:"さしすせそ"},
5 {categoryName:"category4", percentage:50, value:"なにぬねの"},
6 {categoryName:"category5", percentage:30, value:"はひふへほ"},
7 {categoryName:"category6", percentage:20, value:"まみむめも"},
8 {categoryName:"category7", percentage:20, value:"やゆよ"},
9 {categoryName:"category8", percentage:20, value:"らりるれろ"},
10 {categoryName:"category9", percentage:20, value:"わをん"}
11];
12function lottery() {
13 document.getElementById("pickups").innerHTML = "";
14 document.getElementById("output").innerHTML = "";
15 var pickup = [];
16 for(var index in table) {
17 var data = table[index];
18 if(data.percentage > Math.random() * 100) {
19 // あたり
20 pickup.push(data.value);
21 document.getElementById("pickups").innerHTML += data.value + "<br>";
22 }
23 }
24 if(pickup.length > 2) {
25 pickup = [pickup[0], pickup[Math.floor(Math.random() * (pickup.length - 1)) + 1]];
26 }
27 for(var index in pickup) {
28 document.getElementById("output").innerHTML += pickup[index] + "<br>";
29 }
30}
31
32document.getElementById("lotteryButton").addEventListener("click", lottery);