知道你大学考试为什么都及格了吗?

经常逃课、不学习的孩纸们,你们知道为什么大学考试都过了吗?

你听过开根号乘以10吗?

据说,每次考完试之后,分数都太难看,挂科的太多了~~于是乎,老师们想出这么个“开根号乘以10”的办法。

这种方式在大学里面流传甚广~

 

f(x)=sqrt(x)*10, (0<=x<=100) , x为考生原始成绩,把x经过 f 映射后的像作为考生最终的登记成绩,

这样做有很多好处:

  1. f(x)是单调上升的,这样两个成绩x1,x2在经过 f 映射后仍保持原序,保证了处理的公平
  2. f(36)=60,这样考生只要考36分就能及格了!而 f(100)=100,这样保证了分数的上确界是一样的,多合理
  3. f(x)是凸函数,这样越低的分数就能得到越高的涨幅,而越高的分数仅得到较平缓的涨幅,实在是太美了

计算来验证下:

public class ScoreTestMain {
    
    public static void main(String[] args) {
        calculate();
    }

    /**
     * f(x) = sqrt(x)*10, (0<=x<=100) x为考生原始成绩
     */
    public static void calculate() {
        int score = 0;
        for (; score <= 100; score++) {
            double temp = Math.sqrt(score) * 10.0d;
            System.out.println("原始分数:" + score + "\t,计算后的分数:" + (int) temp);
        }
    }
}

运行输出如下:

原始分数:0    ,计算后的分数:0
原始分数:1    ,计算后的分数:10
原始分数:2    ,计算后的分数:14
原始分数:3    ,计算后的分数:17
原始分数:4    ,计算后的分数:20
原始分数:5    ,计算后的分数:22
原始分数:6    ,计算后的分数:24
原始分数:7    ,计算后的分数:26
原始分数:8    ,计算后的分数:28
原始分数:9    ,计算后的分数:30
原始分数:10    ,计算后的分数:31
原始分数:11    ,计算后的分数:33
原始分数:12    ,计算后的分数:34
原始分数:13    ,计算后的分数:36
原始分数:14    ,计算后的分数:37
原始分数:15    ,计算后的分数:38
原始分数:16    ,计算后的分数:40
原始分数:17    ,计算后的分数:41
原始分数:18    ,计算后的分数:42
原始分数:19    ,计算后的分数:43
原始分数:20    ,计算后的分数:44
原始分数:21    ,计算后的分数:45
原始分数:22    ,计算后的分数:46
原始分数:23    ,计算后的分数:47
原始分数:24    ,计算后的分数:48
原始分数:25    ,计算后的分数:50
原始分数:26    ,计算后的分数:50
原始分数:27    ,计算后的分数:51
原始分数:28    ,计算后的分数:52
原始分数:29    ,计算后的分数:53
原始分数:30    ,计算后的分数:54
原始分数:31    ,计算后的分数:55
原始分数:32    ,计算后的分数:56
原始分数:33    ,计算后的分数:57
原始分数:34    ,计算后的分数:58
原始分数:35    ,计算后的分数:59
原始分数:36    ,计算后的分数:60
原始分数:37    ,计算后的分数:60
原始分数:38    ,计算后的分数:61
原始分数:39    ,计算后的分数:62
原始分数:40    ,计算后的分数:63
原始分数:41    ,计算后的分数:64
原始分数:42    ,计算后的分数:64
原始分数:43    ,计算后的分数:65
原始分数:44    ,计算后的分数:66
原始分数:45    ,计算后的分数:67
原始分数:46    ,计算后的分数:67
原始分数:47    ,计算后的分数:68
原始分数:48    ,计算后的分数:69
原始分数:49    ,计算后的分数:70
原始分数:50    ,计算后的分数:70
原始分数:51    ,计算后的分数:71
原始分数:52    ,计算后的分数:72
原始分数:53    ,计算后的分数:72
原始分数:54    ,计算后的分数:73
原始分数:55    ,计算后的分数:74
原始分数:56    ,计算后的分数:74
原始分数:57    ,计算后的分数:75
原始分数:58    ,计算后的分数:76
原始分数:59    ,计算后的分数:76
原始分数:60    ,计算后的分数:77
原始分数:61    ,计算后的分数:78
原始分数:62    ,计算后的分数:78
原始分数:63    ,计算后的分数:79
原始分数:64    ,计算后的分数:80
原始分数:65    ,计算后的分数:80
原始分数:66    ,计算后的分数:81
原始分数:67    ,计算后的分数:81
原始分数:68    ,计算后的分数:82
原始分数:69    ,计算后的分数:83
原始分数:70    ,计算后的分数:83
原始分数:71    ,计算后的分数:84
原始分数:72    ,计算后的分数:84
原始分数:73    ,计算后的分数:85
原始分数:74    ,计算后的分数:86
原始分数:75    ,计算后的分数:86
原始分数:76    ,计算后的分数:87
原始分数:77    ,计算后的分数:87
原始分数:78    ,计算后的分数:88
原始分数:79    ,计算后的分数:88
原始分数:80    ,计算后的分数:89
原始分数:81    ,计算后的分数:90
原始分数:82    ,计算后的分数:90
原始分数:83    ,计算后的分数:91
原始分数:84    ,计算后的分数:91
原始分数:85    ,计算后的分数:92
原始分数:86    ,计算后的分数:92
原始分数:87    ,计算后的分数:93
原始分数:88    ,计算后的分数:93
原始分数:89    ,计算后的分数:94
原始分数:90    ,计算后的分数:94
原始分数:91    ,计算后的分数:95
原始分数:92    ,计算后的分数:95
原始分数:93    ,计算后的分数:96
原始分数:94    ,计算后的分数:96
原始分数:95    ,计算后的分数:97
原始分数:96    ,计算后的分数:97
原始分数:97    ,计算后的分数:98
原始分数:98    ,计算后的分数:98
原始分数:99    ,计算后的分数:99
原始分数:100    ,计算后的分数:100
View Code

看到了吗?只要你的分数达到36分,你就及格了。36分耶!!

 

不过经过上面的计算,还是会有些人没及格,那如果想要全班都及格,咋办呢?

老师们不愧是老师,于是有了下面的计算方法:

 f(x)=max(60,min) + (100-max(60,min))*(x-min)/(max-min)    其中:min是原最低分,max是原最高分,X是考生原始成绩

这种算法在符合以上开根号乘以十的众多合理性的基础上(对于第三条,尽管其非凸函数,但是在分越低上调幅度越大这点上是一致的~),
还有以下独特优点:

  1. 最低分保证大于等于60,也就是没人会挂科!
  2.  f(x)不仅是X的函数,还是max和min,即原最高分和最低分的函数,也就是说这个变换不仅依赖于本人的分数,还依赖于其他人的分数。这增加了横向比较,无疑在相对性上做的更好;
  3. 由于f(x)是X的线性变换,在出现不确定的情形下仍然不失为一种准确无偏的估计。

还是计算来验证下:

package score.test;

public class ScoreTestMain {

    public static void main(String[] args) {
        calculate(100, 0);
    }

    /**
     * f(x)=max(60,min) + (100-max(60,min))*(x-min)/(max-min).
     * min是原最低分,max是原最高分,X是考生原始成绩
     * 
     * @param max
     *            原最高分
     * 
     * @param min
     *            原最低分
     * 
     */
    public static void calculate(double max, double min) {
        int score = 0;
        for (; score <= 100; score++) {
            double temp = Math.max(60, min) + (100d - Math.max(60, min))
                    * (score - min) / (max - min);
            System.out.println("原始分数:" + score + "\t,计算后的分数:" + (int) temp);
        }
    }
}

计算结果:

原始分数:0    ,计算后的分数:60
原始分数:1    ,计算后的分数:60
原始分数:2    ,计算后的分数:60
原始分数:3    ,计算后的分数:61
原始分数:4    ,计算后的分数:61
原始分数:5    ,计算后的分数:62
原始分数:6    ,计算后的分数:62
原始分数:7    ,计算后的分数:62
原始分数:8    ,计算后的分数:63
原始分数:9    ,计算后的分数:63
原始分数:10    ,计算后的分数:64
原始分数:11    ,计算后的分数:64
原始分数:12    ,计算后的分数:64
原始分数:13    ,计算后的分数:65
原始分数:14    ,计算后的分数:65
原始分数:15    ,计算后的分数:66
原始分数:16    ,计算后的分数:66
原始分数:17    ,计算后的分数:66
原始分数:18    ,计算后的分数:67
原始分数:19    ,计算后的分数:67
原始分数:20    ,计算后的分数:68
原始分数:21    ,计算后的分数:68
原始分数:22    ,计算后的分数:68
原始分数:23    ,计算后的分数:69
原始分数:24    ,计算后的分数:69
原始分数:25    ,计算后的分数:70
原始分数:26    ,计算后的分数:70
原始分数:27    ,计算后的分数:70
原始分数:28    ,计算后的分数:71
原始分数:29    ,计算后的分数:71
原始分数:30    ,计算后的分数:72
原始分数:31    ,计算后的分数:72
原始分数:32    ,计算后的分数:72
原始分数:33    ,计算后的分数:73
原始分数:34    ,计算后的分数:73
原始分数:35    ,计算后的分数:74
原始分数:36    ,计算后的分数:74
原始分数:37    ,计算后的分数:74
原始分数:38    ,计算后的分数:75
原始分数:39    ,计算后的分数:75
原始分数:40    ,计算后的分数:76
原始分数:41    ,计算后的分数:76
原始分数:42    ,计算后的分数:76
原始分数:43    ,计算后的分数:77
原始分数:44    ,计算后的分数:77
原始分数:45    ,计算后的分数:78
原始分数:46    ,计算后的分数:78
原始分数:47    ,计算后的分数:78
原始分数:48    ,计算后的分数:79
原始分数:49    ,计算后的分数:79
原始分数:50    ,计算后的分数:80
原始分数:51    ,计算后的分数:80
原始分数:52    ,计算后的分数:80
原始分数:53    ,计算后的分数:81
原始分数:54    ,计算后的分数:81
原始分数:55    ,计算后的分数:82
原始分数:56    ,计算后的分数:82
原始分数:57    ,计算后的分数:82
原始分数:58    ,计算后的分数:83
原始分数:59    ,计算后的分数:83
原始分数:60    ,计算后的分数:84
原始分数:61    ,计算后的分数:84
原始分数:62    ,计算后的分数:84
原始分数:63    ,计算后的分数:85
原始分数:64    ,计算后的分数:85
原始分数:65    ,计算后的分数:86
原始分数:66    ,计算后的分数:86
原始分数:67    ,计算后的分数:86
原始分数:68    ,计算后的分数:87
原始分数:69    ,计算后的分数:87
原始分数:70    ,计算后的分数:88
原始分数:71    ,计算后的分数:88
原始分数:72    ,计算后的分数:88
原始分数:73    ,计算后的分数:89
原始分数:74    ,计算后的分数:89
原始分数:75    ,计算后的分数:90
原始分数:76    ,计算后的分数:90
原始分数:77    ,计算后的分数:90
原始分数:78    ,计算后的分数:91
原始分数:79    ,计算后的分数:91
原始分数:80    ,计算后的分数:92
原始分数:81    ,计算后的分数:92
原始分数:82    ,计算后的分数:92
原始分数:83    ,计算后的分数:93
原始分数:84    ,计算后的分数:93
原始分数:85    ,计算后的分数:94
原始分数:86    ,计算后的分数:94
原始分数:87    ,计算后的分数:94
原始分数:88    ,计算后的分数:95
原始分数:89    ,计算后的分数:95
原始分数:90    ,计算后的分数:96
原始分数:91    ,计算后的分数:96
原始分数:92    ,计算后的分数:96
原始分数:93    ,计算后的分数:97
原始分数:94    ,计算后的分数:97
原始分数:95    ,计算后的分数:98
原始分数:96    ,计算后的分数:98
原始分数:97    ,计算后的分数:98
原始分数:98    ,计算后的分数:99
原始分数:99    ,计算后的分数:99
原始分数:100    ,计算后的分数:100
View Code

 

姜还是老的辣啊~~少年,我们图森破,图样啊~

 这两种方法计算的曲线如下图:

 

 

 

posted @ 2013-06-01 10:40  yejg1212  阅读(756)  评论(0编辑  收藏  举报