如何定义一个算法,给出牙医的排名?

时间:2016-04-12 14:28:56

标签: algorithm

我在定义一个算法时会遇到一些问题,该算法会计算牙医的排名数。

假设我们有三位不同的牙医:

  • 牙医1号:125名患者和125名患者中 牙医已经预定了75个人的时间。其中60%的人有时间。
  • 2号牙医:5名患者中有5名患者 牙医已预订了其中4人的时间。其中80%的人有时间。
  • 牙医3号:有25名患者和14名患者 牙医已经预定了14个人的时间。 56%的人有时间。

如果我们使用公式:

                      patients booked time with / totalpatients * 100 

这不是计算排名的正确方法,因为我们将获得更高百分比的输出,牙医越好,但这是错误的。通过这样做,牙医将有一个排名:

  • 2号牙医的排名为1.(80%有时间)。
  • 1号牙医的排名为2(60%有时间)。
  • 3号牙医的排名为3.(56%有时间)。

但是,它应该是这样的:

  • 牙医编号1 =排名1
  • 牙医2号=排名2
  • 牙医3号=排名3

我不知道制作的算法也会将患者数量作为排名计算的一个因素。

1 个答案:

答案 0 :(得分:0)

如何根据患者人数和预约患者的百分比来定义什么是更好的牙医,这是非常武断的。

让我们调用 P 的患者人数,预约 A 的人数,以及确定牙医 f的“好”的功能。所以 f 将是 P A 的函数: f(P,A)

f 的一个组成部分确实可能是您已经计算过的: A / P

另一个组件必须是 P ,但我认为增加 P f(P,A)的影响对于低 P ,1比高 P 要高得多,因此该分量不应该是线性函数。如果该组件的值介于0和1之间也是实用的,就像其他组件一样。

综合所有这些,我建议 f 的定义,它将给出0到1之间的数字:

 f(P,A) = 1/3 * P/(10 + P) + 2/3 * A/P

对于不同的牙医,这导致:

 1:  1/3 * 125/135 + 2/3 * 75/125 = 0.7086419753...
 2:  1/3 *   5/15  + 2/3 *  4/5   = 0.6444444444...
 3:  1/3 *  25/35  + 2/3 * 14/25  = 0.6114285714...

您可以使用公式中的常量因子,例如增加术语10。或者您可以更改因子1/3和2/3,确保它们的总和为1。

这只是一种方法。其他方式无穷无尽......