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 总数据中取随机几条数据的更多相关文章

  1. FreeMarkerz在List中取任意一条数据的某一个值

    首先你要知道要取的数据的下标 <#list itemsList as item> <#if item_index==1> <#if "${item.value} ...

  2. 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 ...

  3. sql-实现select取行号、分组后在分组内排序、每个分组中的前n条数据

    表结构设计: 实现select取行号 sql局部变量的2种方式 set @name='cm3333f'; select @id:=1; 区别:set 可以用=号赋值,而select 不行,必须使用:= ...

  4. mysql-利润set变量模拟分组查询每组中的第N条数据

    查询思路: 很多时候想在使用group by时想查询group by的每一组中的第N条数据,而取这些数据时往往按如下方式去执行则很慢 ; 按如上方式,对于数据10000左右的表就已经很吃不消. 或已拼 ...

  5. DataTable相关操作,筛选,取前N条数据,获取指定列数据

    DataTable相关操作,筛选,取前N条数据,获取指定列数据2013-03-12 14:50 by Miracle520, 2667 阅读, 0 评论, 收藏, 编辑 1 #region DataT ...

  6. mysql查询随机几条数据(速度快)

    MySql查询随机几条数据 想到了 Max RAND 这几个函数 用以下2种办法都可以实现查询. 速度还行. 几十万数据左右, 没有什么问题. SELECT * FROM `news` WHERE i ...

  7. sql 查询某个条件多条数据中最新的一条数据或最老的一条数据

    sql 查询某个条件下多条数据中最新的一条数据或最老的一条数据 test_user表结构如下: 需求:查询李四.王五.李二创建的最初时间或者最新时间 1:查询最初的创建时间: SELECT * FRO ...

  8. oracle和sql server中,取前10条数据语法的区别

    在sql server中,取数据中前10条语句,我们可以用top 10 这样语句,但是oracle就没有这个函数,接下来介绍它们之间的区别 1.sql server 取前10语句和随机10条的语法 - ...

  9. 关于MyBatis的collection集合中只能取到一条数据的问题

    问题:在涉及多表查询的时候,使用collection元素来映射集合属性时,出现了只能查询到一条数据的情况,但用sql语句在数据库中查询会有多条记录. 解决:如果两表联查,主表和明细表的主键都是id的话 ...

随机推荐

  1. sqlserver高版本还原到低版本方法

    想要将Sqlserver2014高版本备份的数据还原到低版本SqlServer2008R2上去,但是这在SqlServer中是没法直接还原数据库的,通过以下方法可以顺利还原. 通过高版本生成sql脚本 ...

  2. 哈雷监控设备的操作及升级NSG9k6G

    哈雷监控设备的操作及升级NSG9k6G 一.下载升级包: http://pan.baidu.com/s/1kTmw9sr 如连接不可以用可以直接私聊我.QQ1841031740 二.升级: 下载完后, ...

  3. UWP&WP8.1 基础控件——Grid

    Grid是一个面板控件  Grid是UWP和WPF,WP8.1中最重要的一个控件,相当相当重要. 他是一个面板控件,是用来添加其他控件   但是呢 用法确实简单的很. 大概就这个样子. 你用工具箱拖, ...

  4. 【bzoj2818】: Gcd 数论-欧拉函数

    [bzoj2818]: Gcd 考虑素数p<=n gcd(xp,yp)=p 当 gcd(x,y)=1 xp,yp<=n满足条件 p对答案的贡献: 预处理前缀和就好了 /* http://w ...

  5. tomcat跨域(亲测可用)

    首先下载cors-filter-2.5.jar(版本不要求)和java-property-utils-1.9.1 1.把这两个jar包放在tomcat的lib下. 2.在conf文件夹下找到web.x ...

  6. 最短路【bzoj1726】: [Usaco2006 Nov]Roadblocks第二短路

    1726: [Usaco2006 Nov]Roadblocks第二短路 Description 贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友.贝茜很喜欢路边的风景,不想那么快地结束她 ...

  7. CF671A Recycling Bottles 计算几何

    It was recycling day in Kekoland. To celebrate it Adil and Bera went to Central Perk where they can ...

  8. js 遍历tree的一个例子

    小例子蕴含着到力量,我希望自己有改变自己生活的能力,自己有主宰自己命运的能力... 备注:这个例子有问题. <!DOCTYPE html> <html lang="en&q ...

  9. pacemaker +corosync高可用

    server1:yum install pssh-2.3.1-2.1.x86_64.rpm  crmsh-1.2.6-0.rc2.2.1.x86_64.rpm -yyum install -y pac ...

  10. Java 类型转换(int->String)

    1 如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([ ...