net 总数据中取随机几条数据
List<string> lstSample = new List<string>();
Random rand = new Random();
List<int> lstRand = new List<int>();
for (int i = ; lstRand.Count() < sampleNum; i++)
{
int mRandNum = rand.Next(, mStageDataCount);
if (!lstRand.Contains(mRandNum))
{
lstRand.Add(mRandNum);
lstSample.Add(lstDataAll.ToList()[mRandNum]);
}
}
平均等判断
List<string> lstSampleRangIdSel = new List<string>(); //去掉同一重复的
List<string> lstStageBuildId = IProjectBuildHouseStage.Select(m => m.BuildingId).Distinct().ToList(); //分期所有的
//余数
int mQuotient = sampleNum / lstBuilding.Count();
if (mQuotient > )
{
//少了的楼房数据
int mLost = ;
foreach (var buildId in lstBuilding)
{
Random rand = new Random();
List<int> lstRand = new List<int>();
var lstProjectBuildHouseStageQuotient = IProjectBuildHouseStage.Where(m => m.BuildingId == buildId);
int mBuildHouseCount = lstProjectBuildHouseStageQuotient.Count();
//余数大于楼房数
if (mQuotient > mBuildHouseCount)
{
if (lstProjectBuildHouseStageQuotient.Any())
{
lstProjectBuildHouseSample.AddRange(lstProjectBuildHouseStageQuotient.ToList());
}
mLost = mLost + mQuotient - mBuildHouseCount;
continue;
} for (int i = ; lstRand.Count() < mQuotient; i++)
{
int mRandNum = rand.Next(, mBuildHouseCount);
if (!lstRand.Contains(mRandNum))
{
lstRand.Add(mRandNum);
lstProjectBuildHouseSample.Add(lstProjectBuildHouseStageQuotient.ToList()[mRandNum]);
}
}
} //模数
int mRemainder = sampleNum % lstBuilding.Count() + mLost;
if (mRemainder > )
{
Random rand = new Random();
List<int> lstRand = new List<int>();
for (int i = ; lstRand.Count() < mRemainder; i++)
{
int mRandNum = rand.Next(, mStageDataCount);
if (!lstRand.Contains(mRandNum))
{
string strIdSel = IProjectBuildHouseStage.ToList()[mRandNum].BuildingId;
var lstExcept = lstStageBuildId.Where(m => m != strIdSel).Except(lstSampleRangIdSel);
if (lstExcept.Any() && lstSampleRangIdSel.Contains(strIdSel))
{
continue;
}
lstRand.Add(mRandNum);
lstProjectBuildHouseSample.Add(IProjectBuildHouseStage.ToList()[mRandNum]);
if (!lstSampleRangIdSel.Contains(strIdSel))
{
lstSampleRangIdSel.Add(strIdSel);
}
}
}
}
}
else
{
Random rand = new Random();
List<int> lstRand = new List<int>();
for (int i = ; lstRand.Count() < sampleNum; i++)
{
int mRandNum = rand.Next(, mStageDataCount); if (!lstRand.Contains(mRandNum) )
{
string strIdSel = IProjectBuildHouseStage.ToList()[mRandNum].BuildingId;
var lstExcept = lstStageBuildId.Where(m => m != strIdSel).Except(lstSampleRangIdSel);
if (lstExcept.Any() && lstSampleRangIdSel.Contains(strIdSel))
{
continue;
}
lstRand.Add(mRandNum);
lstProjectBuildHouseSample.Add(IProjectBuildHouseStage.ToList()[mRandNum]);
if (!lstSampleRangIdSel.Contains(strIdSel))
{
lstSampleRangIdSel.Add(strIdSel);
}
}
}
}
--作废
//余数
int mQuotient = sampleNum / lstBuilding.Count();
if (mQuotient > )
{
//少了的楼房数据
int mLost = ;
foreach (var buildId in lstBuilding)
{
Random rand = new Random();
List<int> lstRand = new List<int>();
var lstProjectBuildHouseStageQuotient = IProjectBuildHouseStage.Where(m => m.BuildingId == buildId);
int mBuildHouseCount = lstProjectBuildHouseStageQuotient.Count();
//余数大于楼房数
if (mQuotient > mBuildHouseCount)
{
if (lstProjectBuildHouseStageQuotient.Any())
{
lstProjectBuildHouseSample.AddRange(lstProjectBuildHouseStageQuotient.ToList());
}
mLost = mLost + mQuotient - mBuildHouseCount;
continue;
} for (int i = ; lstRand.Count() < mQuotient; i++)
{
int mRandNum = rand.Next(, mBuildHouseCount);
if (!lstRand.Contains(mRandNum))
{
lstRand.Add(mRandNum);
lstProjectBuildHouseSample.Add(lstProjectBuildHouseStageQuotient.ToList()[mRandNum]);
}
}
} //模数
int mRemainder = sampleNum % lstBuilding.Count() + mLost;
if (mRemainder > )
{
Random rand = new Random();
List<int> lstRand = new List<int>();
for (int i = ; lstRand.Count() < mRemainder; i++)
{
int mRandNum = rand.Next(, mStageDataCount);
if (!lstRand.Contains(mRandNum))
{
lstRand.Add(mRandNum);
lstProjectBuildHouseSample.Add(IProjectBuildHouseStage.ToList()[mRandNum]);
}
}
}
}
else
{
Random rand = new Random();
List<int> lstRand = new List<int>();
for (int i = ; lstRand.Count() < sampleNum; i++)
{
int mRandNum = rand.Next(, mStageDataCount);
if (!lstRand.Contains(mRandNum))
{
lstRand.Add(mRandNum);
lstProjectBuildHouseSample.Add(IProjectBuildHouseStage.ToList()[mRandNum]);
}
}
}
net 总数据中取随机几条数据的更多相关文章
- FreeMarkerz在List中取任意一条数据的某一个值
首先你要知道要取的数据的下标 <#list itemsList as item> <#if item_index==1> <#if "${item.value} ...
- SELECT INTO和INSERT INTO SELECT的区别 类似aaa?a=1&b=2&c=3&d=4,如何将问号以后的数据变为键值对 C# 获取一定区间的随即数 0、1两个值除随机数以外的取值方法(0、1两个值被取值的概率相等) C# MD5 加密,解密 C#中DataTable删除多条数据
SELECT INTO和INSERT INTO SELECT的区别 数据库中的数据复制备份 SELECT INTO: 形式: SELECT value1,value2,value3 INTO Ta ...
- sql-实现select取行号、分组后在分组内排序、每个分组中的前n条数据
表结构设计: 实现select取行号 sql局部变量的2种方式 set @name='cm3333f'; select @id:=1; 区别:set 可以用=号赋值,而select 不行,必须使用:= ...
- mysql-利润set变量模拟分组查询每组中的第N条数据
查询思路: 很多时候想在使用group by时想查询group by的每一组中的第N条数据,而取这些数据时往往按如下方式去执行则很慢 ; 按如上方式,对于数据10000左右的表就已经很吃不消. 或已拼 ...
- DataTable相关操作,筛选,取前N条数据,获取指定列数据
DataTable相关操作,筛选,取前N条数据,获取指定列数据2013-03-12 14:50 by Miracle520, 2667 阅读, 0 评论, 收藏, 编辑 1 #region DataT ...
- mysql查询随机几条数据(速度快)
MySql查询随机几条数据 想到了 Max RAND 这几个函数 用以下2种办法都可以实现查询. 速度还行. 几十万数据左右, 没有什么问题. SELECT * FROM `news` WHERE i ...
- sql 查询某个条件多条数据中最新的一条数据或最老的一条数据
sql 查询某个条件下多条数据中最新的一条数据或最老的一条数据 test_user表结构如下: 需求:查询李四.王五.李二创建的最初时间或者最新时间 1:查询最初的创建时间: SELECT * FRO ...
- oracle和sql server中,取前10条数据语法的区别
在sql server中,取数据中前10条语句,我们可以用top 10 这样语句,但是oracle就没有这个函数,接下来介绍它们之间的区别 1.sql server 取前10语句和随机10条的语法 - ...
- 关于MyBatis的collection集合中只能取到一条数据的问题
问题:在涉及多表查询的时候,使用collection元素来映射集合属性时,出现了只能查询到一条数据的情况,但用sql语句在数据库中查询会有多条记录. 解决:如果两表联查,主表和明细表的主键都是id的话 ...
随机推荐
- dubbo心跳机制 (2)
此文已由作者赵计刚授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 来看一下HeaderExchangeServer.this.getChannels(): 1 p ...
- [poj 1185] 炮兵阵地 状压dp 位运算
Description 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队.一个N*M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用&quo ...
- 转载JAVA八大经典书籍,你看过几本?
一.Java从入门到精通*<Java从入门到精通(第3版)>从初学者角度出发,通过通俗易懂的语言.丰富多彩的实例,详细介绍了使用Java语言进行程序开发需要掌握的知识.<Java从入 ...
- hdu2328(后缀数组 + 二分)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2328 题意: 求 n 个串的字典序最小的最长公共子串 思路: 本题中单个字符串长度不超过 200, ...
- Pycharm新手教程,只需要看这篇就够了
pycharm是一款高效的python IDE工具,它非常强大,且可以跨平台,是新手首选工具!下面我给第一次使用这款软件的朋友做一个简单的使用教程,希望能给你带来帮助! 目前pycharm一共有两个版 ...
- uoj#448. 【集训队作业2018】人类的本质(Min_25筛+拉格朗日插值)
题面 传送门 题解 肝了整整一天--膜拜yww和cx巨巨--(虽然它们的题解里我就没看懂几个字) 请备好草稿纸和笔,这种题目就是需要耐心推倒 题目所求是这么一个东西 \[ \begin{aligned ...
- linux惊群
基本概念:子进程继承父进程环境和上下文的大部分内容的拷贝,其中就包括文件描述符表. 父进程fork出来的子进程,复制父进程的文件描述符.这些文件描述符fd是独立的,但是文件描述符指向的系统文件表项是唯 ...
- kuangbin专题十六 KMP&&扩展KMP HDU3294 Girls' research
One day, sailormoon girls are so delighted that they intend to research about palindromic strings. O ...
- Could not instantiate bean class [org.springframework.data.mongodb.core.MongoTemplate]
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'repositoryDa ...
- inner join、left join、right join、full join
A表 a1 b1 c1 01 数学 95 02 语文 90 03 英语 80 B表 a2 b2 01 张三 02 李四 04 王五 SQL语句:select A.*,B.* from A inner ...