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


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

    你听过开根号乘以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

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

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

  • 相关阅读:
    iOS开发——UI基础-自定义构造方法,layoutSubviews,Xib文件,利用Xib自定义View
    iOS开发——UI基础-懒加载,plist文件,字典转模型,自定义view
    iOS开发——UI基础-按钮的创建和设置
    iOS开发——UI基础-Xcode资源拷贝
    机器学习中的数学基础_七月算法4月机器学习班第1次课程笔记
    leetcode--Merge Sorted Array
    leetcode--First Missing Positive
    leetcode--Divide two integers
    leetcode--Implement strStr()
    leetcode--Remove Element
  • 原文地址:https://www.cnblogs.com/yejg1212/p/3111892.html
Copyright © 2020-2023  润新知