抽签! 抽签! 算法 现急求一个实现 抽签的算法 ; 功能:从数据库中 m 条记录中抽取 n 条 (m>n) 要求:尽最大可能公平 请大家提供 好的算法 或者 思路 谢谢!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 随机数出现概率1、区间法 定义一个最大区间,如1000,新建一个区间数组,如[10,50,200,400,600,1000],然后出0~1000的随机数,在哪个区间就是哪个。 2、洗牌法 定义一个大数组,如a[1000],按照概率往里填充目标值,如[1,1,1, …… 2,2,…… ,5,……],然后打乱(随你怎么打乱都行),再出0~999的随机数n,取a[n]即可。 当然,如果你有历史出现记录,还可以在取到出现值后再判断一次,超出概率范围就重出。 select top n * from orders order by newid() 从1-m中随即产生一个数字,然后在剩下的m-1个数字中随机产生一个数字,知道产生了n个为止,这样不会重复,要想公平的话,就需要每条记录多一个公平值的字段,记录这条记录被抽取的以往概率,抽取的时候结合这个概率来处理,决定是否抽取或者重新,可以平衡 select top n * from tableName a order by newid() 一般就按照 wackyboy 的 NumericUpDown_ValueChanged C# WINFORM 动态创建在panel上的button如何获取 如何把控件装到工具栏中 ASP.NET 分裂自负串 請問用c#編寫客戶端 如何在較低配置的電腦(已裝win2000sp4) 中運行該客戶端軟件?? 请教高手指点,关于c#中继承与死锁的问题? 怎样用C#做一个酒店管理项目? 如何通过textbox实现向数据库的更新(update)操作 本人菜鸟求解 关于主界面 从界面 的值传递问题 c#中如何读取.dll文件。 100分求解:“动态编译”问题 在form 设计窗口上的控件 右上的小箭头叫什么?
1、区间法
定义一个最大区间,如1000,新建一个区间数组,如[10,50,200,400,600,1000],然后出0~1000的随机数,在哪个区间就是哪个。 2、洗牌法
定义一个大数组,如a[1000],按照概率往里填充目标值,如[1,1,1, …… 2,2,…… ,5,……],然后打乱(随你怎么打乱都行),再出0~999的随机数n,取a[n]即可。 当然,如果你有历史出现记录,还可以在取到出现值后再判断一次,超出概率范围就重出。
select top n * from orders order by newid()