简单的群体测试方案C++代码(Group testing against Covid-19)

原理参考链接
https://www.econstor.eu/handle/10419/221811
http://www.magigen.com/h-nd-348.html
在这里插入图片描述

文章原理回顾

文章比较了两种估计人群中病毒流行率的方法:
1、个体测试,即对12000人的样本进行病毒测试,并采用标准二项测试得出95%的置信区间;
2、群体测试,即对500组35人进行测试(总人口涉及17500人)

关于置信区间(概率论的知识):

置信区间是从bai样本统计du量派生的值范围,可能包含zhi未知总体参dao数的值。由于置信区间zhuan具有随机性,因此来shu自特定总体的两个样本将不可能生成相同的置信区间。但是,如果将样本重复多次,则在所生成的置信区间中有特定百分比的置信区间将包含未知总体参数。
使用置信区间可以评估总体参数的估计值。例如,制造商想要知道他们生产的铅笔的平均长度是否不同于目标长度。制造商随机抽取铅笔样本,并确定样本的平均长度为 52 毫米,95% 置信区间为 (50,54)。因此,所有铅笔的平均长度介于 50 毫米和 54 毫米之间的可信度为 95%。

简单的群体测试方案代码

简单的群体测试方案需要样本池和第二轮RNA提取的所有样本阳性池。

#include <iostream>
#include<stdlib.h>
#include <vector>
#include <ctime>using namespace std;
//函数1,生成一个长度为100的vector,输入M,生成的一维数组里面有M个1,100-M个0.
void Initial_Group(vector<int>& group,int M)
{if (group.empty()){cout <<"group initial failed"<<endl;return;}srand((unsigned)time(NULL));for(int i = 0;i < M;i++){int num = rand() % group.size();//如果已经存在了,重新初始化一个numwhile (group[num] == 1){num = rand() % group.size();}//如果不存在的话group[num] = 1;}return;
}
//函数2,打印函数
void Pirnt_Group(vector<int>& group)
{int length = sqrt(group.size());if (length * length == group.size()){for (int i = 0; i < length; i++){for (int j = 0; j < length; j++){cout << group[i * length + j] << " ";}cout << endl;}}else{for (int i = 0; i < group.size(); i++)cout << group[i] << " ";cout << endl;}return;
}
//函数3,分组函数
//输入:一维序列vector<int>Group ,分组大小num
//输出:二维数组vector<vector<int>>,将Group分割为大小num的子序列
//A.assign(B.begin(),B.end());将区间[first,last)的元素赋值到当前的vector容器中
void Split_Group(vector<int>& group , vector<vector<int>>& splited_group , int num)
{if (group.empty()){cout << "group split falied"<<endl;return;}vector<int>::iterator itr = group.begin();int it = 0;while (it < group.size()){vector<int> tmp;if (it + num <= group.size()){tmp.assign(itr, itr + num);splited_group.emplace_back(tmp);}it = it + num;if(it < group.size())itr = itr + num;}return;
}
//合成血液函数
//输入一维序列,只要其中有1,则结果为1
//输出结果矩阵
void Synthetic_Blood(vector<vector<int>>& splited_group, vector<int>& result)
{for (int i = 0; i < splited_group.size(); i++){int flag = 0;for (int j = 0; j < splited_group[i].size(); j++){if (splited_group[i][j] == 1){flag = 1;break;}}result.emplace_back(flag);}for (int i = 0; i < result.size(); i++)cout << result[i] << " ";cout << endl;return;
}
//计算人力物力、时间消耗函数
int Cal_Times(int all_groups, int posi_group_nums,int group_nums_size)
{//计算检测的次数 = 组数 +阳性组数*阳性组中的样本大小int result = all_groups + group_nums_size * posi_group_nums;return result;
}
//将合成血液的结果中为阳性的序列进行单个测试,并记录结果到Positive_Samples
void Further_Test(vector<vector<int>>& splited_group, vector<int>& result,vector<int>& Positive_Samples)
{int posi_group_nums = 0;for (int i = 0; i < result.size(); i++){//说明该分组中有阳性样本if (result[i] == 1){posi_group_nums++;for (int j = 0; j < splited_group[i].size(); j++){//记录在原序列中的坐标if (splited_group[i][j] == 1)Positive_Samples.emplace_back(i* splited_group[0].size()+j);}}}for (int i = 0; i < Positive_Samples.size(); i++)cout << Positive_Samples[i] + 1 << " ";cout << endl;int spend_time = Cal_Times(result.size(),posi_group_nums, splited_group[0].size());cout <<"时间花费" <<endl;cout << spend_time<<endl;return;
}int Cal_Money()
{return 0;
}
int main()
{int sample_nums = 17500;int positive_sample_nums = 350;int sec_group_sample_nums = 35;vector<int> Positive_Samples;vector<int> Group(sample_nums,0);vector<int> Result;vector<vector<int>> Splited_Group;Initial_Group(Group, positive_sample_nums);//Pirnt_Group(Group);cout << endl;Split_Group(Group, Splited_Group, sec_group_sample_nums);//Pirnt_Split_Group(Splited_Group);cout << endl;Synthetic_Blood(Splited_Group,Result);Further_Test(Splited_Group,Result,Positive_Samples);return 0;
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/377444.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DDOS小测试

一、F12打开开发者工具&#xff0c;刷新待攻击的网站&#xff0c;重新获得一次请求 二、user-agent为浏览器的合法标识符 user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 是键值对的形式&…

融合注意力机制的YOLOv5火焰识别+Arduino UNO R3实现5s内连续识别到火焰,警报灯红灯亮起

效果&#xff1a;摄像头捕获室内图像&#xff0c;将视频实时通过串口通讯传递给改进之后的YOLOv5神经网络进行火焰识别&#xff0c;若5s内连续检测到有火焰&#xff0c;警报灯变红&#xff0c;进入危险状态。5s之内未连续出现火焰&#xff0c;警报灯变绿&#xff0c;进入安全状…

Moon.Orm性能报告

以下为有网友公司的评估测试及使用规范 大家可以下载word看看 http://pan.baidu.com/s/1hquvRuc 一、和ADO.NET进行的压力测试 说明&#xff1a;2000并发用户&#xff0c;此图为一网友公司对moon.orm的测评 二、和ADO.NET的性能对比测试 说明&#xff1a;同时请求10000条数据&a…

(保守群组测试 非保守群组测试 二次重复测试 自适应二次重复测试)四种群体测试的C++代码

目录原理保守组检测非保守组检测二次重复测试自适应二次重复测试四种测试方法的核心代码保守群组测试非保守群组测试二次重复测试与自适应二次重复测试测试代码参考文献原理 假设该病在人群中的患病率&#xff08;先验概率&#xff09;为p&#xff0c;我们想用群体检验法检验N…

AngularJS中的表达式

AngularJS表达式 (AngularJS Expressions) In AngularJS, expressions are solved to give a result. It outputs the result of the expression in the html element that called it. Expressions in AngularJS contain literals, constants, operators and variables with re…

学习总结:机器学习(一)

有监督学习&#xff08;Supervised Learning&#xff09;所谓有监督学习&#xff0c;是区别于无监督学习而言的。其过程如下&#xff1a;给定一系列样本&#xff0c;样本是由一系列特征值和输出值组成。比如&#xff0c;某个地方的商品房&#xff0c;包括房子大小、房间数、距离…

WPS双栏格式下插入单栏图片

以一个我认识的西工大博士大佬的一篇SCI为例&#xff0c;期刊是双栏&#xff0c;图片过大&#xff0c;需要单栏进行展示&#xff0c;效果图如下&#xff1a; 一、双栏内容 二、插入单栏图像 随便敲几个字&#xff0c;选中&#xff0c; 页面布局----分栏---一栏 这行字就会…

JavaScript中的数组

Here we are discussing one of the most useful data structure, Array. 在这里&#xff0c;我们讨论最有用的数据结构之一Array 。 By conventional definition of arrays, "Arrays are the homogeneous collection of data types. But in JS, Arrays simply are the c…

WPS根据章节编号依次排序

第Ⅲ章节有四小部分&#xff0c;分别为A、B、C、D 第Ⅳ章节要重新开始编号&#xff0c;从A开始 操作步骤&#xff1a; ①再D后面回车&#xff08;红线位置回车&#xff09;&#xff0c;生成E ②把Ⅳ中待写内容写到E中 ③将E复制到Ⅳ下&#xff0c;这里需要注意D的换行也要复制…

【C++基础】异常匹配与内建异常类

目录异常匹配catch: 按异常类型匹配为何要使用异常类内建异常类标准库中的异常基类标准库中的异常类例1&#xff1a;vector下标访问越界out_of_range异常例2&#xff1a;内存分配失败bad_alloc异常例3&#xff1a;侧向转换失败bad_cast异常类几种情况&#xff0c;使用对应异常异…

小试---EF5.0入门实例1

现在做个小练习吧~~~ 第一步&#xff1a;首先新建一个数据库名字为Test;数据库里面只有一个表UserTable 脚本为&#xff1a; USE [master] GO /****** 对象: Database [Test] 脚本日期: 12/15/2013 18:51:54 ******/ CREATE DATABASE [Test] ON PRIMARY ( NAME NTest, F…

iScroll4 禁止select等页面元素默认事件的解决方法 转

iScroll4 禁止select等页面元素默认事件的解决方法起因在于onBeforeScrollStart : function(e){ e.preventDefault(); },这一行&#xff0c;iSroll禁止了事件的默认行为&#xff0c;导致select&#xff0c;option&#xff0c;textarea等元素无法点击。解决方法也很简单&#xf…

MPEG的完整形式是什么?

MPEG&#xff1a;运动图像专家组 (MPEG: Moving Picture Experts Group) MPEG is an abbreviation of Moving Picture Experts Group. It is a working group of authorities that is founded to establish standards for audio and video compression and transmission. The a…

安利一款倒计时插件---雨滴桌面

内容来自B站(搜索Rainmeter即可)&#xff0c;里面教程很多&#xff0c;因为视频看的有点麻烦&#xff0c;故进行了整理 一、下载安装包、解压、安装 免费下载连接&#xff0c;不需要积分 skin文件夹存放皮肤的一些配置文件&#xff0c;因为原本皮肤太low了 第二个是可执行文…

【C++基础】自定义异常类与多重捕获

目录自定义异常类构建过程例&#xff1a;Vec3D类的数组下标越界的异常类捕获多种无关异常不同的异常的捕获捕获派生异常异常处理的次序例子&#xff1a;多重捕获异常类catch块的参数类型可以不用引用类型吗?自定义异常类 自定义异常类通常由exception或其后代类派生。这样我们…

gprs 睡眠模式_GPRS的完整形式是什么?

gprs 睡眠模式GPRS&#xff1a;通用分组无线业务 (GPRS: General Packet Radio Service) GPRS is an abbreviation of General Packet Radio Service. It is a non-voice, high-level speed packet switching technology planned for GSM networks. On 2G and 3G cellular tran…

【C++基础】C++11的noexcept声明符 与 异常传播

目录C noexcept&#xff1a;1、用途2、用法1、noexcept声明符的用法&#xff1a;2、noexcept运算符的用法异常传播1、异常传播的定义2、异常传播中的规则3、异常传播的代价C noexcept&#xff1a; 1、用途 C11使用noexcept指明函数是否抛出异常&#xff1a; 若函数不抛异常&a…

CSS中的文本格式

CSS文字格式 (CSS text formatting) CSS text properties allow you to style your text in various ways very easily. Such as color, alignment, spacing, direction, etc. CSS文本属性使您可以轻松地以各种方式设置文本样式。 例如颜色 &#xff0c; 对齐方式 &#xff0c;…

CSS简写指南

1.margin 1.1 margin:1px 2px 3px(上 左右 下) 1.2 margin:2px 3px(上下 左右) 1.2 margin:1px 3px 2px 3px(上右下左) 2.padding(同上) 3.border border:1px red solid (border-width border-color border-style) 1 2 3border-width&#xff1a;1px 2px 3px; //最多可用四个值…

【C++基础】模板基础与函数模板

目录初识模板函数模板函数模板实例化显式实例化隐式实例化初识模板 求两个int、float、char类型的数据的最大值&#xff1a; C里面要这样写&#xff1a; int maxInt(int x, int y); double maxDouble(double x, double y); char maxChar(char x, char y);C使用函数重载&#…