linq-关于概率抽奖和Linq的问题

问题描述

关于概率抽奖和Linq的问题

代码如下:

list= new List<ChouJiangItemInfo>
        {
            new ChouJiangItemInfo{ItemId=1,ItemName="起凡至尊礼包",Percentage=25},
            new ChouJiangItemInfo{ItemId=1,ItemName="随机武将灵技能",Percentage=25},
            new ChouJiangItemInfo{ItemId=1,ItemName="貂蝉抱枕",Percentage=35},
            new ChouJiangItemInfo{ItemId=1,ItemName="群雄绝版T恤",Percentage=15}
        };
var item=(from o in Enumerable.Range(1, 500)
                      let item = list[random.Next(list.Count())]
                      let seed = random.Next(1, 101)
                      where seed < item.Percentage
                      select item).First();

谁能解释下,这个抽奖原理,为什么非要随机一个Item出来,再用随机数去和Item.Percentage去比较 ? 这样概率准确吗?
这种情况下,是不是Item是不是有可能为NULL

如果是下面这段代码:

int seed=random.Next(101);
for(var i=0;i<lst.count;i++)
{
 if(seed<=15&&seed>0)   //15-0=15
{
    return lst[i];
}
else if(seed<=50&&seed>15) //40-15=25
{
       return lst[i];
}else if(seed<=75&&seed>50)  //65-40=25
{
    return lst[i];

}
   else if(seed<=100&&seed>75)//100-75=25
   {
       return lst[i];
   }  

}

这个应该也可能 实现 概率抽奖吧

解决方案

所谓条条道路通罗马吧。。。

时间: 2016-06-23

linq-关于概率抽奖和Linq的问题的相关文章

LINQ to Entities 不支持 LINQ 表达式节点类型“ArrayIndex”

我就不屁话,能一张图就解决的就不说话了   2015-03-28 14:53:24,440 [10] ERROR log - System.NotSupportedException: LINQ to Entities 不支持 LINQ 表达式节点类型"ArrayIndex". 在 System.Data.Entity.Core.Objects.ELinq.ExpressionConverter.NotSupportedTranslator.Translate(ExpressionCo

linq的相关技术生成-求大神,帮忙把SQL转成LINQ,小弟第一次涉及LINQ需要参考谢谢了

问题描述 求大神,帮忙把SQL转成LINQ,小弟第一次涉及LINQ需要参考谢谢了 select * from ( select a.codea.gid from productonsale a productinformation b GeneralStandardCategory c where a.prodid=b.gid and b.StdCatID =c.gid and c.code in ('607''609') and a.ChlID='0DB3B832-3E16-E111-A1F0

.NET深入解析LINQ框架(一:LINQ优雅的前奏)

阅读目录: 1.LINQ简述 2.LINQ优雅前奏的音符 2.1.隐式类型 (由编辑器自动根据表达式推断出对象的最终类型) 2.2.对象初始化器 (简化了对象的创建及初始化的过程) 2.3.Lambda表达式 (对匿名方法的改进,加入了委托签名的类型推断并很好的与表达式树的结合) 2.4.扩展方法 (允许在不修改类型的内部代码的情况下为类型添加独立的行为) 2.5.匿名类型 (由对象初始化器推断得出的类型,该类型在编译后自动创建) 2.6.表达式目录树(用数据结构表示程序逻辑代码) 3.LINQ

.NET深入解析LINQ框架(六:LINQ执行表达式)

阅读目录: 1.LINQ执行表达式 在看本篇文章之前我假设您已经具备我之前分析的一些原理知识,因为这章所要讲的内容是建立在之前的一系列知识点之上的,为了保证您的阅读顺利建议您先阅读本人的LINQ系列文章的前几篇或者您已经具备比较深入的LINQ原理知识体系,防止耽误您的宝贵时间. 到目前为止我们对LINQ的执行原理已经很清楚了,从它的前期构想到它真正为我们所用都有足够的证据,但是似乎问题并没有我们想的那么简单,问题总是在我们使用中频频出现尤其是新技术的使用,当然有问题才能有进步. 一:LINQ执行

linq的相关技术生成-linq 虚拟列 怎么实现

问题描述 linq 虚拟列 怎么实现 在Sql中我们可以虚拟出来列例如: SELECT A ,B , C , C AS D FROM TABLE 其中的D是不存在表中的列,但是查询的时候可以虚拟出来 现在我想知道我是这个功能在linq中可以实现吗?怎么实现谢谢!

.NET深入解析LINQ框架(三:LINQ优雅的前奏)

阅读目录: 1.动态LINQ查询(动态构建Expression<T>表达式树) 2.DLR动态语言运行时(基于CLR之上的动态语言运行时) 1].动态LINQ查询(动态构建Expression<T>表达式树) 什么是动态LINQ查询?LINQ的编写是静态的,因为C#是基于静态类型系统原理设计的,在编写时已经确定类型,也就是在编译时就已经知道将要执行什么样的查询,条件是什么.排序方式是什么等等.那么很大一部分应用场合中我们需要根据用户的选择来查询数据源,以往我们都是通过判断的方式来拼

编程-Yahoo UI(引用)问题,求高手指教!

问题描述 Yahoo UI(引用)问题,求高手指教! http://img.my.csdn.net/uploads/201309/02/1378129656_3660.jpg <!DOCTYPE html> new document <!--引入一个yui3的种子文件--> .hello{ background-color:red } <script type="text/javascript" src="http://yui.yahooapis

DOTNET:LINQ与ADO.NET 3.0的创新

ado 你知道微软下一代ADO.NET 3.0资料存取技术的重大创新与改革吗? 为了让各位预览未来的ADO.NET 3.0技术,虽然祭司最近一直在忙碌于ASP.NET 2.0出版事宜,但是还是不能荒废引领各位迈向最新指术的伟大宗旨,而这不也是各位来到DotNet开发圣殿最大的目的吗,祭司约略翻译了美国微软副总Somasegar的Blog文章,前一个星期他才出尽了锋头,爆红到整个.NET圈都在引用它的文章,因为它揭露了.NET Framework 3.0的蓝图概貌,以下是翻译: Language-

linq学习专题

LINQ to SQL语句Union/Intersect/Except介绍 LINQ TO XML之判断不存在行则插入 LINQ to SQL语句(25)之继承 LINQ to SQL语句(24)之视图 LINQ to SQL语句(23)之动态查询 LINQ to SQL语句(22)之DataContext LINQ to SQL语句(21)之用户定义函数 LINQ to SQL语句(20)之存储过程 LINQ to SQL语句(19)之ADO.NET与LINQ to SQL LINQ to S