精华内容
下载资源
问答
  • C++中表示正无穷与负无穷

    千次阅读 2018-05-03 12:22:09
    C++中表示正无穷是0x3f3f3f3f,负无穷是0xc0c0c0c0代码试验 #include<bits/stdc++.h> using namespace std; int main(){ int a=0x3f3f3f3f; int b=0xc0c0c0c0; cout<<a<&...

    C++中表示正无穷是0x3f3f3f3f,负无穷是0xc0c0c0c0

    代码试验

    #include<bits/stdc++.h>
    using namespace std;
    int main(){
        int a=0x3f3f3f3f;
        int b=0xc0c0c0c0;
        cout<<a<<endl<<b;
        //a=1061109567
        //b=-1061109568
    }

    注意负无穷在printf语句中可能会出问题

    展开全文
  • 展开全部1 付键 也就是FK formary key程序交流中心,这是专门为新32313133353236313431303231363533e4b893e5b19e31333264623237手学习设立的论坛二、SQLStructur query language结构化查询语言,是操作关系型数据库...

    展开全部

    1 付键 也就是FK formary key

    程序交流中心,这是专门为新32313133353236313431303231363533e4b893e5b19e31333264623237手学习设立的论坛

    二、SQL

    Structur query language

    结构化查询语言,是操作关系型数据库中的对象。

    DDL(Data definition language 数据定义语言),用于建表或删表操作,以及对表约束进行修改

    create table , alter table , drop table 对表结构的增删操作。

    DML(Data manipulation language 数据操作语言),向表中插入纪录,修改纪录

    insert , update , delete , merge

    transaction ,事务控制语言,由DML语句组成的,commit; ,rollback;

    select 查询语句

    dcl 授权语句 grant

    三、Oracle

    DBMS 数据库管理系统

    有Oracle提供,还提供AS,应用服务器

    DBA 数据库管理员

    四、相关操作

    1、sqlplus 访问数据库命令(本地访问/远程访问),和数据库建立连接的命令,是数据库操作的环境

    sqlplus 用户名/密码

    2、show user 显示当前用户的用户名

    改变身份可以直接connect 用户名/密码 --- 这个是sqlplus命令

    在sqlplus中可以使用 ! 可以在shell和sqlplus间切换,!shell命令 可以在sqlplus中使用shell命令。

    实际上是sqlplus开了子进程来执行shell命令。

    3、Oracle数据库中的表分两类:用户表(用户使用操作的表),系统表(数据库系统维护的表,也叫数据字典)

    对用户表的DDL操作出发了对系统表的DML操作!

    五、基本语法

    1、select查询语句

    select table_name from user_tables;(查询系统表)

    以上的查询语句就是查询本用户下所拥有的所有表的表名。

    投影操作,只查看选择的字段的信息。

    选择操作,查看字段中的特定某些信息。

    联接操作,多表查询,通过表间连接,查寻出多表中的信息

    (1)select table_name from user_tables;(查询系统表)

    以上的查询语句就是查询本用户下所拥有的所有表的表名。

    (2)sqlplus的buffer中会缓存最后一条sql语句,可以使用"/"来执行这最后一条sql语句,也可以使用

    edit命令来编辑最后一条sql语句。

    l命令(list)(sqlplus命令)可以显示buffer中最后一条命令。

    sqlplus命令可以缩写

    (3)desc [表名]

    这是一条sqlplus命令,注意他不是sql语句,这条命令用于查看表的结构。descript的缩写

    [字段名] [字段的类型],这是使用完desc命令后显示的表结构。

    (4)select [表的字段名1],[表的字段名2], ... from 表名;

    select * from 表名; 查寻表中所有字段的信息

    (5)关键字不等拆分,sql语句,以及表名,字段名是大小写不敏感的。

    sql语句要以";"结尾,来表示sql语句结束,如果不加";"系统不会执行此条sql语句,并提示。

    在Oracle中字符显示是左对齐,数值右对齐。

    (6)在select 语句中可以使用数学表达式。

    select [表达式(必须包含本表字段名)],[...],.... from 表名;

    运算的优先级的先乘除后加减,同级自左向右运算,括号改变优先级。

    (7)别名

    select [字段名或表达式] ["别名"],[...] ["..."],.... from 表名;

    可以通过在字段名或表达式后加空格"别名",可以给列,或者表达式结果其别名。

    表达别名必须加双引号。

    (8)字符串拼接使用||符号

    select 目标字段名||" "||目标字段名 from 表名;

    注意:在Oracle中的字符串要用'..'包含

    别名中需要使用空格,或是大小写敏感时需要用".."包含。

    练习:

    自己写一条SQL语句,执行的结果是select * from ...;

    其中...是每张系统表的表名

    即在每张系统表的表名前加“select * from” ,后加“;”

    select 'select * from '||table_name||';' from user_tables;

    2、处理错误

    (1)!oerr ora [错误号] ,系统可以显示错误的原因和如何修改。如果命令错误输入可以使用edit或ed来修改输入错误。

    实际上是在编辑缓存文件中的最后一条sql语句。

    也可以使用 (change) c /错误字段/正确字段,来进行替换操作进行修改。

    只有在Linux平台使用

    ! 相当于 host ,没有断连接,只是切换了一下,执行shell命令

    (2)edit命令来编辑最后一条sql语句。

    3、sqlplus设置

    set pause on 回车响应,分屏显示,只在本会话中有效

    set pause off 关闭分屏显示。

    set pause "..." 设置分屏显示的提示信息。

    set pause on 先输出提示信息,回车响应,分屏显示

    set head off 提头输出关闭

    set feed off 结尾输出关闭

    set echo off 回写关闭

    spool 文件名.sql 写入指定文件

    spool off 关闭写入。

    4、sql脚本

    也就是在文件中写有sql语句的文件,可以在sqlplus中运行。

    引入sql脚本

    sqlplus 用户名/密码 @sql脚本 (注意:在用户名密码输入结束后一定要加空格然后再写@sql脚本)

    在脚本中最后一行写上“exit”,则运行完脚本以后,回到shell上

    5、

    Oracle中的空值 空值会当无穷大处理,其实空值根本就不会存储,只是看作是无穷大。

    Oracle中控制处理函数 NVL(字段名,值),这个字段中的空值替换为指定值,如果不为空,则会返回其原值。

    例:select (salary*12)*(NVL(commission_pct,0)/100+1) salary,first_name from s_emp;

    distinct关键字,去掉重复行(这个关键字会触发排序操作)

    例: select distinct dept_id,title from s_emp;

    dept_id与title的联合不唯一

    注意:distinct,关键字之后会对from之前的字段进行排重操作。

    6、column命令 --- sqlplus命令

    column命令 列格式的定义

    column 目标列名 查看这个类是否定义了格式

    column 目标列名 format a.. 设置列宽。

    column last_name heading 'Employee|Name' FORMAT A15

    设置题头

    这其中的'|'是换行符

    column salary justify left format $99,990.00

    定义数字显示格式

    注意:如果不满足显示的格式,就会把数据显示为"#"

    column salary justify left format $00,000.00

    会出现$00,928.00 ,用0补齐

    column 列名 clear (清除列格式定义)

    注意:只有sqlplus命令才有简写,并且在使用sqlplus命令时结尾也不能加分号。

    六、选择操作

    1、order by

    排序子句 ASC(默认,升序) DESC(降序)

    order by 目标列名(别名) 排序顺序(不写排序顺序,会默认为升序排序)

    例:select first_name from s_emp order by first_name;

    select first_name from s_emp order by first_name desc;

    注意:升序空值在结果的末尾,降序空值在结果的最前面。

    2、where子句

    where子句使用在 select ... from ... 后面,用来选择所需(符合条件的)的记录

    where后面跟的是表达式 也就是 XXX=XXX, XXX between X and X ,XXX in(X,X,X)

    like '...' 通配查询

    between ... and ... ,表示结果在这之间,between and是一个闭区间,

    也就相当于... <= ... and ... >= ... 。

    !=,<>,^=,这三个都标识不等于,<=,>=,=,这些运算符都可以使用。

    ... in (va1,val2,...) 判断结果是否在这个枚举中存在

    like '...' 字符串通配查询,'%'表示多个字符,'_',表示一个字符。

    注意:转义的用法:like ‘S\_%’ escape ‘\’

    ... and ... 表示只有两个条件同时满足

    ... or ... 表示条件只要满足其中只一就可以

    all ... 是要求都满足条件。

    not .....,则是可以与以上的条件产生反效果。

    空值会对not in造成影响,也就是不等于任何值,但是空值例外。

    ... is null 使用来判断值是否为空。

    注意:Oracle中的字符串是严格区分大小写的。

    (1)注意数据类型,数字类型直接写,字符用'......' ,缺省格式的Date可以用'......',只有别名

    才用" "包含。

    (2)选择合适的运算符

    七、单行函数

    1.字符函数

    字符是大小写敏感的

    转小写 lower(字段名) --- 其中的参数可以是一个字符串常量或是一个字段名

    转大写 upper(字段名)

    首字母大写 initcap(字段名)

    字符串拼接 concat(字段1, 字段2)

    截取子串 substr(字段名, 起始位置,取字符个数)

    dual表,是专门用于函数测试和运算的,他只有一条记录

    字符串拼接 concat(...,....)

    求指定子串 substr(...,起始位置,取字符个数)

    可以使用"-"表示从右向左取,取的时候可以从左往友取。

    例:select substr(first_name,-2,2) sub from s_emp;(取后两个)

    select substr(first_name,2,2) sub from s_emp;(取前两个)

    2,数值函数

    四舍五入 round(数据,保留小数点后几位)

    可以用负数表示小数点前,0,表示小数点后第一位,也就是保留个位,-1表示个位(保留到十 位)。

    例:select round(15.36,1) from dual;

    截取数字函数 trunc(数据,保留的位数(小数点后位数)) 截取个位之后补0

    例:select trunc(123.456,1) from dual;

    3,日期函数

    日期格式,

    全日期格式 世纪信息,年月日,时分秒。

    缺省日期格式,日-月-年 dd-mon-rr

    修改当前会话的日期格式,会按照指定的格式输出日期

    alter session set nls_date_format='yyyy mm dd hh24:mi:ss';

    返回当前日期 sysdate

    例:select sysdate from dual;

    select sysdate+1 from dual; 获得明天的日期,加1,单位是天

    日期是格式敏感的

    求两个日期间相隔了多少个月 months_between(date1,date2)

    加减指定数量的月份 add_months(date,月数),月数可以为负,负值就是减去相应的月数。

    从date日期开始的第一个星期五 next_day(date,FriDay)

    返回月末的日期 last_day(date)

    截取日期 trunc(date,'年或月或日或时分秒')

    例:select next_day(sysdate,2) from dual;

    例:select trunc(add_months(sysdate,1),'month') from dual;

    ROUND('25-MAY-95','MONTH') 01-JUN-95

    ROUND('25-MAY-95 ','YEAR') 01-JAN-95

    TRUNC('25-MAY-95 ','MONTH') 01-MAY-95

    TRUNC('25-MAY-95 ','YEAR') 01-JAN-95

    练习:

    返回下个月的第一天的日期

    select round(last_day(sysdate),'MONTH') from dual;

    select add_months(trunc(sysdate,'MONTH'),1);

    4,不同数据类型间转换函数

    将日期转成字符 tochar(date,'日期格式')

    日期格式要用有效格式,格式大小写敏感 'yyyy mm dd hh24:mi:ss',

    'year'(全拼的年),'mm'(数字表示的月) 'month'(全拼的月),'day'(星期的全拼),'ddspth' (日期的全拼) 'yy mm dd'

    例:select to_char(sysdate,'yyyy mm dd hh24:mi:ss')from dual;

    将字符转换成数字 to_number('...')

    将数字转字符to_char(number,'fmt') fmt是数字格式

    将字符串转成日期 to_date('...','日期格式')

    例:select to_char(to_date('2006 11 03','yyyy mm dd'),'dd-month-yy') from dual;

    1、等值连接

    select [表别名1.字段名1],[表别名2.字段名2],...

    from 表1 表别名1 ,表2 表别名2

    where 表别名1.字段名3=表别名2.字段名4;

    表连接时,当表与表之间有同名字段时,可以加上表名或表的别名,加以区分,使用时要用

    表名.字段名或表别名.字段名(列名)。当表的字段名是唯一时,可以不用加上表名或表的别名。

    注意:当为表起了别名,就不能再使用表名.字段名。

    例:select a.first_name,a.last_name,b.name

    from s_emp a,s_dept b

    where a.dept_id=b.id;

    2、非等值连接

    select [表别名1.字段名1],[表别名2.字段名2],...

    from 表1 表别名1 ,表2 表别名2

    where 表别名1.字段名3 ..... 表别名2.字段名4

    ....可以使比较运算符,也可以使其他的除了'='的运算符

    例:select e.ename, d.grade,e.sal

    from emp e,salgrade d

    where e.sal between d.losal and d.hisal;

    3、自连接

    用别名把一张表中的数据分成两部分,然后在使用条件过滤。

    select [表别名1.字段名1],[表别名2.字段名2],...

    from 表1 表别名1 ,表1 表别名2

    where 表别名1.字段名3=表别名2.字段名4;

    例:select a.first_name ename,b.first_name cname

    from s_emp a,s_emp b

    where a.manager_id=b.id;

    以上所提到的表连接,都叫做内连接,严格匹配两表的记录。

    4、外连接

    会使用一方表中的所有记录去和另一格表中的记录按条件匹配,空值也会匹配,这个表中的所有记录都会显示,数据库会模拟出记录去和那些不匹配的记录匹配。

    例:select a.first_name enamei,a.id,b.first_name cname,b.id

    from s_emp a,s_emp b

    where a.manager_id=b.id(+);

    即用a表中的数据去匹配b表的,若b表中有null,系统模拟纪录与其匹配

    注意:要把那一方的记录全部都显示出来,还有注意条件(+)跟在要全部选出的对端。

    外连接的应用:

    列出哪个部门没有员工

    select e.deptno,d.deptno

    from emp e,dept d

    where e.deptno(+)=d.deptno

    and e.deptno is null;

    三、组函数

    group 组

    group by 分组子句,按指定的分组规则分组 ,这个group by 子句可以跟在 select 语句后或是 having后面。

    group by子句也会出发排序操作,会按分组字段排序。

    select [组函数或分组的字段名] ,... from 表名 group by [字段名1],[字段名2],.....;

    例:select avg(salary) from s_emp group by dept_id;

    注意:组函数可以处理一组数据,返回一个值。

    组函数会忽略空值。

    avg(..),求平均值,sum(..),求和 这两个函数的参数只能是number型的。

    以下所提到的函数可以使用任意类型做参数。

    count(..),用来统计记录数,可以使用排重命令。count(...)默认使用的是all。

    max(..),min(..)求最大值和最小值,

    count(*),统计表中记录数。

    例:select max(b.name),avg(a.salary), max(c.name)

    from s_emp a,s_dept b,s_region c

    where a.dept_id=b.id and b.region_id=c.id

    group by b.dept_id;

    注意:只要写了group by子句,

    *** select后就只能用group by后的字段或者是组函数。 ***

    where子句只能够过滤记录,放单行函数。

    having子句可以过滤组函数结果或是分组的信息,且写在group by子句后。

    例:

    select max(b.name),avg(a.salary), max(c.name)

    from s_emp a,s_dept b,s_region c

    where a.dept_id=b.id and b.region_id=c.id

    group by b.id

    having sum(a.salary)>4000;

    column 也可以定义有别名的列的格式。

    column "别名" 格式定义

    注意:要先过滤掉不需要的记录,然后再进行分组操作,提高效率。

    四、子查询

    子查询,就是可以嵌在任何的sql语句中的select语句。

    在select语句中嵌套子查询时,会先执行子查询。一般的会将子查询放在运算符的右边。

    注意:在使用子查询时,要注意这个运算符是单行的(也就是只能是单值),还是多行运算符(范围,多值,in)。

    配合使用子查询返回的结果必须符合运算符的用法。

    例:

    select first_name,title

    from s_emp

    where title=any(select title from s_emp

    where last_name='Smith')

    and upper(last_name)!='SMITH';

    select first_name,title

    from s_emp

    where title in (select title from s_emp

    where last_name='Smith')

    and upper(last_name)!='SMITH';

    五、将业务需求转换成可操作的表

    一: 需求分析

    二: 画E-R图

    三: 转换成表关系

    四: 割接(新老系统交接)

    五:

    E-R图属性:

    * 为强制且非空属性

    o 可选属性(可以有值也可以没有)

    #* 表示此属性唯一且非空

    实体关系:

    mastbean maybean

    数量关系: 多对一关系

    一对多关系

    一对一关系

    多对多关系

    第一范式,所有的属性都必须是单值,也就是属性只表示单一的意义。(记录可以重复,没有任何限制)

    第二范式,属性要求唯一且非空,(记录不可重复,但是数据可能会出现冗余)。

    第三范式,非主属性只能依赖于主属性,不能依赖于其他非主属性。(解决数据冗余问题)

    六、约束

    约束是针对表中的字段进行定义的。

    primary key (主键约束 PK)保证实体的完整性,保证记录的唯一

    主键约束,唯一且非空,并且每一个表中只能有一个主键,有两个字段联合作为主键,只有两个字段放在一起唯一标识记录,叫做联合主键。

    foreign key (外建约束 FK)保证引用的完整性,

    外键约束,外键的取值是受另外一张表中的主键或唯一值得约束,不能够取其他值,只能够引用主键会唯一键的值,被引用的表,叫做parent table(父表),引用方的表叫做child table(子表),要想创建子表,就要先创建父表,后创建子表,记录的插入也是如此,先父表后子表,删除记录,要先删除子表记录,后删除父表记录,要修改记录,如果要修改父表的记录要保证没有被子表引用。要删表时,要先删子表,后删除父表。

    unuque key(唯一键),值为唯一

    index(索引)是数据库特有的一类对象,view(示图)

    典型的一对多 class 对应多个学生。

    student table class table

    ______________________________ _________________________

    | id | name | address| class_id| | id |class_desc|class_num|

    |(PK)|______|________|___(FK)__| |(pk)|__________|_________|

    | | | | | | | | |

    一对一

    student tabel shenfenzheng table

    ____________________ _________________________________

    | id | name | address| | s_id |shenfen_desc|shenfen_num|

    |(PK)|______|________| |(PK,FK)|____________|___________|

    | | | | | | | |

    多对多

    student tabel zhongjian table kecheng table

    ____________________ _________________________________ __________________

    | id | name | address| | s_id |shenfen_desc|shenfen_num| | kid | kechengname|

    |(PK)|______|________| |(FK,FK)|____________|___________| | (PK)|____________|

    | | | | |联合主键| | | | | |

    引用对方表的主键,当作本身的主键,所以这个表的主键,既是主键又是外建

    建表和其他相关操作

    DDL语句

    创建表:

    create table 表名 ( 字段名1 类型(数据长度)(default ...) 约束条件, 字段名2 类型(数据长度) 约束条件 );

    Oracle数据库中的数据类型

    varchar(长度),可变长字符串,char(长度) 定长

    number(..,..),number 表示浮点数,或者是整数

    long 大对象,clog 字符的大对象,相当于文本文件在表中只存放一个相当于只针对值

    blog 二进制的大对象,也是以相当于指针的形式存放的。

    primary key约束:

    主键约束的定义:

    第一种定义形式:

    create table test(c number primary key ); 列级约束

    第二种定义形式:

    create table test(c number , primary key(c) ) ; 表级约束

    create table test( c1 number constraints pkc1 primary key ); 此约束有名字: pkc1

    create table test(c number , c2 number , primary key (c ,c1) ) ; 用表级约束可以实现联合主键

    foregin key (fk) 外键约束:

    (先定义父表,再定义子表)

    carete table parent(c1 number primary key );

    create table child (c number primary key , c2 number references parent(c1));

    或表级约束定义:

    create table child( c number primary key , c2 number , foreign key(c2) references parent(c1));

    如果两个字段都为唯一且非空,这时可以定义成UK+NOT NULL

    (PK或UK)一对多(FK)

    (PK+UK)一对一(FK) 或 (PK)一对一(PK)

    多对对多关系,一般都通过一张中间表来分解成两个一对多的表

    建立表

    create table[schema]table

    schema: 一个用户对应一个schema 不同用户下的表不能互相查看

    select count(*) from s_dept; <===> select count(*) from sd0611.s_dept;

    一个表中只能存储一个LONG类型

    CLOB 存储大的文本对象

    BLOB 存储大的二进制对象

    create table test(c1 number primary key); 设置主键

    create table test(c1 number constraints test_c1 primary key); 定义约束名,默认约束名为SYS_ 在列后面定义约束称为列级约束

    create table test(c1 number primary key(c1)); 所有列定义完后再定义约束称为表级约束(能定义联合主键)

    cretae table test(c1 number,c2 number,priary key(c1,c2)); 定义联合主键

    create table child(c1 number primary key); 先要定义父表

    create table child(c1 number primary key, c2 number references parent(c1)); 然后定义子表 references parent定义外键

    create table child(c1 number primary key, c2 number references parent(c1) on delete cascate); on delete cascate为级联删除

    create table child(c1 number primary key, c2 number references parent(c1) on delete set null); on delete set null删除后将外键置空

    create table child (c1 number primary key, c2 number,foreignkey(c2) references parent(c1));

    二、约束

    1、非空约束(not null)

    这是一个列级约束

    在建表时,在数据类型的后面加上 not null ,也就是在插入时不允许插入空值。

    例:create table student(id number primary key,name varchar2(32) not null,address varchar2(32));

    2、unique 唯一约束

    唯一约束,是会忽略空值的,唯一约束,要求插入的记录中的值是为一的。

    例:create table student(id number,name varchar2(32),address varchar2(32),primary key (id),unique (address));

    如果创建一个uk,系统自动建一个唯一索引

    3、pk、uk

    Oralce支持级联删除,不支持级联更新

    4、check约束

    检查约束,可以按照指定条件,检查记录的插入。check中不能使用尾列,不能使用函数,不能引用其他字段。

    例:create table sal (a1 number , check(a1>1000));

    2Q==

    已赞过

    已踩过<

    你对这个回答的评价是?

    评论

    收起

    展开全文
  • 区间选点

    2021-03-30 11:43:50
    题目描述 给定 N 个闭区间 [ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。 输出选择的点的最小数量。 位于区间端点上的点也算作区间内。...将每个区间按右端点从小大排序

    题目描述

    给定 N 个闭区间 [ai,bi],请你在数轴上选择尽量少的点,使得每个区间内至少包含一个选出的点。

    输出选择的点的最小数量。

    位于区间端点上的点也算作区间内。

    样例描述

    输入格式
    第一行包含整数 N,表示区间数。
    
    接下来 N 行,每行包含两个整数 ai,bi,表示一个区间的两个端点。
    
    输出格式
    输出一个整数,表示所需的点的最小数量。
    
    数据范围
    1≤N≤105,
    −109≤ai≤bi≤109
    输入样例:
    3
    -1 1
    2 4
    3 5
    输出样例:
    2
    

    思路

    1. 将每个区间按右端点从小到大排序
    2. 用结构体来表示区间,然后重载运算符<实现基于右端点排序
    3. 从前往后依次枚举每个区间,如果当前区间的右端点不在后面区间内(具体就是比较当前区间的右端点是否小于下一个区间的左端点,若小于则说明两个区间没有交集),则要新选一个点
    4. 结构体排序那块也可以不重载运算符<,而是通过自定义排序函数如下
    bool compare(Range a, Range b){
      return a.r < b.r;
    }
    

    然后在调用sort时添加这个函数参数即可,sort(range, range + n, compare);

    代码

    #include <iostream>
    #include <algorithm>
    
    using namespace std;
    
    const int N = 100010;
    
    int n;
    struct Range{
        int l, r;
        bool operator< (const Range &W)const
        {
            return r < W.r;
        }
    }range[N];
    
     int  main(){
         cin >> n;
         for (int i = 0; i < n; i++) 
           scanf("%d%d", &range[i].l, &range[i].r);
           
           //按照右端点排序
           sort(range, range + n);
           
           int res = 0, ed = -2e9; //ed为负无穷
            for (int i =0; i < n; i++){
                if (ed < range[i].l){
                    res ++ ;
                    ed = range[i].r;
                }
            }
            
            printf("%d\n", res);
            return 0;
     }
    
    展开全文
  • R语言求95%置信区间

    千次阅读 2021-05-23 06:54:43
    标准正态分布下mean=0,sd=195%置信区间为[mean-1.96...那为什么是1.96倍呢,先看两个函数dnormdnorm的d表示density,norm表示正态分布,这个函数是正态分布的概率密度(probability density)函数。给定x,μ和σ后...

    标准正态分布下mean=0,sd=1

    95%置信区间为[mean-1.96*sd,mean+1.96*sd]

    即左侧概率和为97.5%的数据减去左侧概率和为2.5%的数据,期间的数据概率即为95%的置信区间。那为什么是1.96倍呢,先看两个函数

    dnorm

    dnorm中的d表示density,norm表示正态分布,这个函数是正态分布的概率密度(probability density)函数。

    给定x,μ和σ后,dnorm()这个函数返回的就是会返回上面的这个公式的值,如果是标准正态分布,dnorm(n,mean=0,sd=1)输出就是当取n时的概率值,就是正态分布图当x=n时y的值。

    > dnorm(0,mean=0,sd=1)

    [1] 0.3989423

    > pnorm(0,mean=0,sd=1)

    [1] 0.5

    pnorm

    pnorm函数中的p表示Probability,它的功能是,在正态分布的PDF曲线上,返回从负无穷到q的积分,其中这个q指的是一个Z-score,x=(mean+Z-score*sd)时的Z-score。现在我们大概就可以猜测出pnorm(0)的值是0.5,因为在标准正态分布曲线上,当Z-score等于0时,这个点正好在标准正态分布曲线的正中间,那么从负无穷到0之间的曲线面积就是整个标准正态分布曲线下面积的一半,pnorm(n,mean=0,sd=1)输出从负无穷到mean+sd*n的概率总和

    > pnorm(1.96,mean=0,sd=1)

    [1] 0.9750021

    > pnorm(-1.96,mean=0,sd=1)

    [1] 0.0249979

    > pnorm(0,mean=0,sd=1)

    [1] 0.5

    > pnorm(3,mean=0,sd=1)

    [1] 0.9986501

    > pnorm(3,mean=0,sd=1)-pnorm(-3,mean=0,sd=1)

    [1] 0.9973002

    > pnorm(1.96,mean=0,sd=1)-pnorm(-1.96,mean=0,sd=1)

    [1] 0.9500042

    用的最多的是3倍sd,相当于在正态分布落在3倍sd区间的概率为99.73002%,落在1.96倍sd区间的概率为95.00042%

    那怎么求标准正态分布下0.975%,0.025%对应的Z-score呢,利用qnorm函数,非标准正态下不能这么求,因为qnorm函数输入的是分位值。或者查询正态分布表。

    > qnorm(0.975,mean=0,sd=1)

    [1] 1.959964

    > qnorm(0.025,mean=0,sd=1)

    [1] -1.959964

    rnorm

    rnorm()函数的功能用于生成一组符合正态分布的随机数,在学习各种统计学方法时,rnorm这个函数应该是最常用的,它的参数有n,mean,sd,表示随机生成n个正态分布均值为mean标准差为sd时的一组数据,如下所示:

    > rnorm(10)

    [1] -0.2415323 1.9931196 -0.6226402 0.6725090 -0.8638580 -1.3569382

    [7] 0.4761234 0.6999504 0.4408161 0.3819532

    > rnorm(

    n= mean= sd=

    > rnorm(n=20,mean=1,sd=2)

    [1] -0.02763552 2.96251058 3.16586194 1.45967947 3.03086226 3.09190195

    [7] 0.46527166 3.69744544 1.15093511 0.69325058 -0.02883520 3.17007355

    [13] -2.22805708 2.54630482 3.73819504 3.41704757 -0.04029577 0.68659838

    [19] 1.04733424 4.68370675

    cb53a7dc00e3

    example.png

    当出现如图所示的分布,近似正态分布,但是左右胖瘦不太一致时,这是现实中普遍存在的分布情况,如高通量测序过程中的碱基GC分布,这种情况求95%区间的方法

    conf_func = function(data,col){

    set = density(data[,col])

    max_midu = set$x[which.max(set$y)]

    right = data[data[,col] > max_midu,col]

    left = data[data[,col] < max_midu,col]

    max = max_midu + sd(c(right,max_midu*2-right))*1.96

    min = max_midu - sd(c(left,max_midu*2-left))*1.96

    return(list(set,max_midu,min,max,max(set$y)))

    }

    -先求取左侧部分的sd,但是要补足右侧对称的数据

    -同样求右侧部分的sd,同时补足左侧对称的数据

    -用最高密度值时max_gc值加减1.96倍左右侧的sd

    做出效果如图

    cb53a7dc00e3

    example.png

    展开全文
  • 区间算数

    2020-01-31 20:41:05
    利用区间算数实现误差传播计算
  • 威尔逊置信区间算法

    万次阅读 2020-03-23 17:26:52
    二项分布计算置信区间有多种计算公式,最常见的是“正太区间”(Normal approximation interval),但它只适用于样本较多的情况(np > 5 且 n(1 − p) > 5),对于小样本,它的准确性很差。Wilson算法正是解决...
  • C++数值类型的二进制表示

    千次阅读 2019-11-24 13:08:09
    这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、...
  • 区间---

    2021-07-11 13:49:22
    1】给定区间[a,b]为[3,7][3,7][3,7],那么3≤x≤73\leq x\leq 73≤x≤7,所以xxx的可选范围为{3,4,5,6,7},其中要求选出来的xxx的个数必须不少于c=3c=3c=3个 【2】给定区间[a,b]为[8,10][8,10][8,10],那么8≤...
  • 既然是“玩”算法,首先要会玩,否则只会被算法...很多啃过算法书的朋友都知道堆排序和最大最小堆,但是却不能有效地应用实际问题。例如,某算法书介绍 Dijkstra 算法时,提到当问题规模比较大时,每次查找 dist...
  • 虽然不是专业的CS出生,想想接触CS相关的东西也这么久了,居然不知道浮点数在内存表示是怎样的,实在是惭愧啊!于是最近查阅了相关资料,终于弄清了浮点数在内存表示,现在对相关的东西做一个总结。  以下...
  • 添加与当前跟踪的数字部分重叠的区间时,应当添加在区间[left, right)尚未跟踪的任何数字区间中。 queryRange(int left, int right)只有在当前正在跟踪区间[left, right)的每一个实数时,才返回 true。 ...
  • 回到多元方程的求解方法 对于构建一个神经网络来说,需要求出每一个神经元的参数。... + xnwn1 + b1 y2 ​= x1​w12 ​ + x2​w22​ + ... + xnwn2 + b2​ y3​= x1​w13 ​+ x2​w23 ​+ ... + xnwn3...
  • 寒假来了,又了小明和女神们约会的季节。  小明虽为屌丝级码农,但非常活跃,女神们常常在小明网上的大段发言后热情回复“呵呵”,所以,小明的最爱就是和女神们约会。与此同时,也有很多基友找他开黑,由于数量...
  • 分享给大家供大家参考,具体如下:概述:这里主要讲述以下内容:① 缩进② 流程控制语句③ 表达式④ 函数⑤ 对象的方法⑥ 类型⑦ 数学运算1. 缩进Python开发者有意让违反了缩进规则的程序不能通过编译,以此来强制...
  • (必须使用4个空格来表示每级缩进)Python的设计目标之一是让源代码具备高度的可读性。它设计时尽量使用其它语言经常使用的标点符号和英语单词,让源代码整体看起来很整洁美观。它不像静态语言如C、Pascal那样需要重复...
  • 题目链接 题目是环形的石子合并,一个环形的合并石子问题。 思路:将环形的拆开成一条链。将原数组复制一遍追加原数组的后面,生成新的长度为2n的数组...初始化时需要如果求最大值,需要初始化为负无穷 如果是求最
  • 可以看到,sigmoid函数在x=0处取值0.5,在正无穷处极限是1,在负无穷处极限是0,并且函数连续,处处可导。sigmoid的函数值的取值范围是0-1,非常适合用来反映一个事物发生的概率。我们认为 σ ( x ) \sigma(x) σ ( ...
  • 那么这一篇博客我们主要介绍在计算机整数是如何表示的,诸如我们在编码过程遇到的对数据类型进行强制转换可能会得到意想不到的结果在这篇博客里你会得到解答。1、什么是整数?整数包含正整数,0,整数。我们...
  • # 例如: 4=(10-1)/2 那么 1-4(-1次) 1(0次) 1+1*4(1次) 1+2*4(2次) # 所以: 循环 -1/0/1/2 for j in range ( - 1 , int ( numSteps ) + 1 ) : # go over less than and greater than for ...
  • 代码英文词汇

    千次阅读 2020-08-06 09:06:59
    1. file n. 文件;v. 保存文件 2. command n. 命令,指令 3. use v. 使用,用途 4. program n. 程序 5. line n. (数据,程序)行,线路 6. if conj. 如果 7. display vt. 显示,显示器 8. set
  • 但是在计算机则不能这样理解,因为计算机是靠数字信号来表示数,计算机所能处理的整数的长度是由计算机的字长来决定的,所以,在计算机,我们必须制定一个规则来表示整数。C语言的整型数据类型C 语言是支持...
  • 随机数生成方法总计(附代码

    千次阅读 2019-08-29 23:40:38
    1、蒙特卡罗法  蒙特卡罗方法又称统计模拟法、随机抽样技术,是一种随机模拟方法,以概率和统计理论方法为基础的一种计算方法,是使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。将所求解的问题同一定...
  • 1、下载数据 import os import tarfile import urllib.request DOWNLOAD_ROOT = "https://raw.githubusercontent.com/ageron/handson-ml2/master/" HOUSING_PATH = os.path.join("datasets", "housing") HOUSING_...
  • 提到代码规范,一般都会直接联想到代码应该如何编写,才更加易读。我们可以翻阅 SUN 公司(已被 Oracle 收购)、谷歌、BAT、华为等公司发布的 Java 代码规范,你会发现它们不仅仅是针对代码编写规范,而是覆盖了编写...
  • 解释:合并数组 = [1,2,3] ,位数 2 示例 2: 输入:nums1 = [1,2], nums2 = [3,4] 输出:2.50000 解释:合并数组 = [1,2,3,4] ,位数 (2 + 3) / 2 = 2.5 示例 3: 输入:nums1 = [0,0], nums2 = [0,0] 输出:...
  • The God of sheep decides to pixelate some pictures (i.e., change ...//初始化最大最小为负无穷和正无穷 val=(cmin+cmax)/2; printf("%d\n",val); crx=-1;updatex(1,1,n); } } return 0; }
  • 目录请查看上方0、一句话总结1、二进制数字开头0b,八进制数字开头0o 2、更靠谱的类型判断有效数字,NaN,以及整数(es6新增); 3、增加了一个极小的常量,用于判断浮点数计算,结果的误差小于这个常量则基本可以...
  • 电场强度等于电势梯度乘以-1,而这些代码在调用gradient函数求偏导后并没有乘以-1。  先把上一篇博客不严谨的代码拿出来: % 在二维平面上绘制一个正点电荷的电场线图。 k = 8.9875e+9; % 比例系数: e = 1....
  • 写在开头(重复的) ...torch.nn.functional模块包含torch.nn库的所有函数,通常按照惯例将其导入名称空间F,这样可以方便的调用torch.nn所有函数。 除了广泛的损失和激活函数外,您还会在这里找
  • squeeze(a),表示将a的维数位1的维度删掉,squeeze(a,N)表示,如果第N维维数为1,则压缩去掉,否则a矩阵不变 torch.unsqueeze() 是squeeze()的反向操作,增加一个维度,该维度维数为1,可以指定添加的维度。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,277
精华内容 1,310
关键字:

代码中如何表示负无穷到1的区间