const qualitySetting = [
  { probability: 0.9, minimumGuarantee: 5 }, //绿色 0
  { probability: 0.75, minimumGuarantee: 5 }, //蓝色 1
  { probability: 0.55, minimumGuarantee: 5 }, //紫色 2
  { probability: 0.25, minimumGuarantee: 10 }, //金色 3
  { probability: 0.15, minimumGuarantee: 10 }, //红色 4
  { probability: 0.03, minimumGuarantee: 10 }, //彩色 5
];
let map: any = {
  ["-1"]: "普通",
  0: "绿色",
  1: "蓝色",
  2: "紫色",
  3: "金色",
  4: "红色",
  5: "彩色",
};
Object.entries(map).forEach(([k, v]) => {
  map[v as any] = k;
});

function count(quality: number, n: number): number {
  console.log(`conut of '${map[quality]}'`, n);
  if (quality < 0) {
    return n;
  }
  if (quality > 5 || quality < 0) {
    throw new Error("有问题");
  }
  const probability = qualitySetting[quality].probability;
  const numberOfSuperiors = (2 / probability) * n;
  return count(quality - 1, numberOfSuperiors);
}
console.log(count(5, 1));