Drop: Select quality of cards based on drop rates
This commit is contained in:
45
dropRateTest.js
Normal file
45
dropRateTest.js
Normal file
@@ -0,0 +1,45 @@
|
||||
const { QUALITY, QUALITY_NAMES } = require('./config/constants');
|
||||
let results = [];
|
||||
let drops = 1000;
|
||||
let header = `⫭=== Quality distribution for ${drops.toLocaleString()} drops: ===⫬`;
|
||||
console.log(header);
|
||||
console.log(`|${' '.repeat(header.length-2)}|`);
|
||||
for ( let i = 0 ; i < drops ; i++) {
|
||||
//generate rarity based on drop rate
|
||||
let quality = undefined;
|
||||
let roll = Math.random() * 100;
|
||||
if (roll <= 45.0) {
|
||||
quality = QUALITY.BAD;
|
||||
}
|
||||
if (roll > 45.0) {
|
||||
quality = QUALITY.OK;
|
||||
}
|
||||
if (roll > 70.0) {
|
||||
quality = QUALITY.GOOD;
|
||||
}
|
||||
if (roll > 85.0) {
|
||||
quality = QUALITY.GREAT;
|
||||
}
|
||||
if (roll > 95.0) {
|
||||
quality = QUALITY.EXCELLENT;
|
||||
}
|
||||
if (roll > 99.9) {
|
||||
quality = QUALITY.SHINY;
|
||||
}
|
||||
results.push(quality);
|
||||
}
|
||||
|
||||
//count the number of times each quality appears
|
||||
let counts = {};
|
||||
results.forEach(function(x) { counts[x] = (counts[x] || 0)+1; });
|
||||
//print results with percentages
|
||||
let p_total = 0;
|
||||
for (let key in counts) {
|
||||
let p = counts[key]/results.length * 100;
|
||||
p_total += p;
|
||||
let cpStr = `${counts[key].toLocaleString()} (${p}%)`;
|
||||
let fStr = `| ${key}/${QUALITY_NAMES[key]}${' '.repeat(10-QUALITY_NAMES[key].length)}: ${cpStr}`;
|
||||
console.log(`${fStr}${' '.repeat(header.length-fStr.length-1)}|`);
|
||||
}
|
||||
console.log(`⌊${'_'.repeat(header.length-2)}⌋`);
|
||||
|
||||
Reference in New Issue
Block a user