数学

数学基础-概率论04(统计推断-参数假设检验)

南笙酒味 提交于 2020-02-15 15:13:13
小书匠 4.参数假设检验 统计推断的另一类重要的问题是假设检验,所谓假设检验就是对总体分布中的某个参数或者分布的形式作出某种假设,利用抽取样本提供的信息,构造适合的统计量,再根据 小概率事件 进行检验,以作出统计推断。 常用的假设检验方法有U检验法,t检验法, 检验法,F检验法 名词解释: 原假设与备择假设 :把检验的假设称为原假设;把原假设的对立面称为备择假设 显著性检验与显著性水平 :假设检验有两类错误,分别是: 和 ,通常显示 的最大上界而不考虑 的问题称为假设检验,并将 的最大上界称为假设检验的显著性水平。 双侧边假设检验与单侧边假设检验 :针对原假设的假设形式而言,具体查资料,不详细说明。 拒绝域与临界点 :拒绝域是统计量的范围,临界点是拒绝域的边界。 假设检验一般步骤: (1)提出假设:提出原假设 和备择假设 (2)建立合适的统计量,选择检验统计量并确定其分布 (3)确定拒绝域:现给定的显著性水平下,确定 关于统计量的拒绝域 (4)计算:计算样本点对于统计量的值 (5)判断:若统计量落在拒绝域内,则拒绝 ,否则接受 假设检验原理图示: 先来看看前一章 参数估计 的套路: 标准正态分布的概率密度函数 对于给定的置信度 ,我们算得统计量 ,并由此得出未知参数的置信区间。图中的2加3为置信区间。 对于假设检验,给定显著性水平(即为置信区间中的 ),构造统计量后

大数据算法——布隆过滤器

狂风中的少年 提交于 2020-02-15 09:49:18
本文始发于个人公众号: TechFlow ,原创不易,求个关注 今天的文章和大家一起来学习大数据领域一个经常用到的算法——布隆过滤器。如果看过《数学之美》的同学对它应该并不陌生,它经常用在集合的判断上,在海量数据的场景当中用来快速地判断某个元素在不在一个庞大的集合当中。它的原理不难,但是设计非常巧妙,老实讲在看《数学之美》之前,我也没有听说过这个数据结构,所以这篇文章也是我自己学习的笔记。 原理 在我之前的理解当中,如果想要判断某个元素在不在集合当中,经典的结构应该是平衡树和hash table。但是无论是哪一种方法,都逃不开一点,都需要存储原值。 比如在爬虫场景当中,我们需要记录下之前爬过的网站。我们要将之前的网址全部都存储在容器里,然后在遇到新网站的时候去判断是否已经爬过了。在这个问题当中,我们并不关心之前爬过的网站有哪些,我们只关心现在的网站有没有在之前出现过。也就是说之前出现过什么不重要,现在的有没有出现过才重要。 我们利用平衡树或者是Trie或者是AC自动机等数据结构和算法可以实现高效的查找,但是都离不开存储下所有的字符串。想象一下,一个网址大概上百个字符,大约0.1KB,如果是一亿个网址,就需要10GB了,如果是一百亿一千亿呢?显然这么大的规模就很麻烦了,今天要介绍的布隆过滤器就可以解决这个问题,而且不需要存储下原值,这是一个非常巧妙的做法,让我们一起来看下它的原理。

2020 年美国大学生数学建模(ICM)E 题 原题及翻译

。_饼干妹妹 提交于 2020-02-15 08:12:00
EN:Drowning in Plastic Since the 1950s, the manufacturing of plastics has grown exponentially because of its variety of uses, such as food packaging, consumer products, medical devices, and construction. While there are significant benefits, the negative implications associated with increased production of plastics are concerning. Plastic products do not readily break down, are difficult to dispose of, and only about 9 % of plastics are recycled [1]. Effects can be seen by the approximately 4-12 million tons of plastic waste that enter the oceans each year [2,3]. Plastic waste has severe

【ACM算法】-- 数学问题篇 - 进制转换

谁都会走 提交于 2020-02-15 01:50:42
第一题: 思路: 对于进制转换问题,其实理解了取模运算和 10 进制运算,基本是特别好理解的,在进制转换问题中,只需掌握,m 进制转换为 10 进制,10 进制转换为 n 进制即可,任何进制之间的转换,都已 10 进制为桥梁,这样的话,所有的进制题,都可以抽象成 10 进制转换问题。 理解: 在十进制中,我们要获得每一位的数值,需要数位拆解,每拆完一位,然后缩小目标数,再拆一位,取模运算中,产生的位一定不会超过模,仔细想一下,这就相当于把一个数改成模这种大小的一种进制,每缩一圈,都会产生一位。但是数值总大小是真正不会变的。这时候,我们不妨把一个数抽象成 数 X ,对于X这个数,现在他没有任何进制的表示,如果想要用10进制来表示,则对10取模,再缩小,再取模。如果想用2进制来表示,则对2取模。(注意:当数X本身就用2进制或其他进制来表示的时候,这时候的取当前进制数的模就变成了数位拆解。)以下就是更加疯狂地个人理解了:当其他进制向十进制转变的时候,需要位乘位权,这个过程是m进制先转换为数X,数X再转换为10进制,只不过,数X在现实世界中的表现形式与10进制相符合,所以这时候数X在转换成10进制,就相当于数位拆解了。 综上 ,忽略以上扯淡理解,就可以把数X就看成十进制数。这时候十进制数就是核心。由它负责向其他进制转换,而其他进制相互转换也必须经过十进制

10.斐波那契数列

こ雲淡風輕ζ 提交于 2020-02-14 21:45:10
斐波那契数列 一:斐波那契数列简介 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N ) * 二:题目描述 求斐波那契数列的第n项(n<39) 三:代码 /* 斐波那契数列 */ public class Demo10 { public static void main ( String [ ] args ) { int fib = fib ( 32 ) ; System . out . println ( fib ) ; int fib2 = fib2 ( 32 ) ; System . out . println ( fib2 ) ; } public static int fib ( int n ) { int [ ] fiba = new int [ n + 1 ] ; fiba [ 0 ] = 1 ; fiba [ 1 ] = 1 ; for ( int i = 2 ; i <= n ; i ++ ) { fiba [ i ]

【ACM算法】-- 数学问题篇 - 数位拆解

此生再无相见时 提交于 2020-02-14 19:50:58
思路 :这个有两种做法。 比较传统的做法。实实在在的按照一个整型数来输入,然后数位拆解。 比较简单的方法。把输入看作一个字符串,这样的话,可以直接遍历字符串,直接就数位拆解了。 这里说一下 int 的范围:(64位系统) 有符号整数:通俗点说—> 9 位的都可以表示,10位的只能表示高位为1的数,正负都一样。 无符号整数:9 位的都可以表示,10 位的只能表示高位为3以下的数(包括3)。表示范围从 0 开始 对于 long long类型,直接 位数 乘 2 倍就可以了,基本记忆 9 位和 18 位基本就没问题了。 对于int 、long 之间的使用: 链接 代码如下:(方法一) # include <stdio.h> int a , b ; int buf1 [ 11 ] , buf2 [ 11 ] , size1 , size2 ; int main ( ) { freopen ( "in.txt" , "r" , stdin ) ; while ( scanf ( "%d%d" , & a , & b ) != EOF ) { size1 = size2 = 0 ; do { buf1 [ size1 ++ ] = a % 10 ; a / = 10 ; } while ( a != 0 ) ; do { buf2 [ size2 ++ ] = b % 10 ; b / =

游戏中的数学之魔塔数学

白昼怎懂夜的黑 提交于 2020-02-14 08:22:33
前言:这几天心血来潮找找以前玩过的老游戏,就随手下载了一个PK32。今天早上又看到光良50岁的热搜,一方面感叹时光飞逝,一方面也感觉到作者刘景雄在代码方面的强悍。 足足五页的游戏却只有7.3M的软件大小,还有几乎完备的美术。故此写了这篇文章。 一、基础数据 这种游戏想必大家多少也有些了解。所谓的计算,就是我先攻击,我的伤害=我的ATK-敌人DEF,然后敌人生命值下降这些。然后敌人攻击我。敌人伤害=敌人ATK-我的DEF,然后我的生命值下降这些。直到一方的生命值下降为0为止。 首先我们先将一些数据来数学化。 设我的攻击为MATK,防御为MDEF。敌人的攻击为EATK,防御为EDEF,生命值为EHP。最终受到的伤害为DMG。 这样的话伤害公式为DMG=(EATK-MDEF)*EHP/(MATK-EDEF)。这里面敌人的属性都是定值。所以DMG、MATK、MDEF这三个变量与这些定值构成了一个三元函数。 因为在pk32的21层魔塔里并没有越升越贵或者同价格攻防数量不等等说法,所以不必考虑这些条件。 二、开始计算 我们的目标是计算什么条件下提升攻击收益高,提升防御收益高。当然在21层魔塔中不必考虑过多。因为本身游戏难度不高,所以可以在多数条件下防杀敌人(防御力大于等于敌人攻击力。而攻击力只要能破防即可)。 我们假设每次提升为k。 那么当提升攻击时,DMG1=(EATK-MDEF)*EHP/

【Python】2.13学习笔记 数学函数和随机函数

蹲街弑〆低调 提交于 2020-02-14 01:14:24
我死了,今天看课看过头了,忘了发作业,被典明批评 而且化学作业还是瞎搞的,直接就发了 我觉得我已经提前死亡了,现在不死亡,开学也会的 函数 挺容易的,有很多语言之间重合的部分 注意 在使用某些数学函数以前,要使用这一语句 import math 使用随机数前,得调用另一个 import random \(import\) 的作用是调用一个库 例如之前的 import keyword 和 \(C++\) 里的 #include<bits/stdc++.h> 类似 而且在使用库中的函数时,需要加“库的名称.” 例如开方函数需要写成 math.sqrt() 不加 \(math.\) 会报错 库: 封装一些功能 同一库里的函数功能相似 绝对值函数 \(abs\) 函数,搞竞赛的时候不是很常用(其实是我太菜了 print( abs( -19260817 ) ) #顺带一提,19260817是一个质数 这个函数不在 \(math\) 库中,它是内建函数 大于小于 真则返回1,假则返回0 不用调用 \(math\) 库 \(max,min\) 函数 \(max\) 字面意思,返回给定参数较大值 但是和 \(C++\) 不一样的是,可以同时比较多个 a1 = 1 a2 = 2 a3 = 3 a4 = 4444 #我又来迫害米4达了 print( max( a1, a2, a3, a4 ) )