跪求广告权重算法..............

清风道禅 2010-05-24 09:52:57
就是根据设定数字的大小来控制广告显示的几率,数字越大,显示的几率越高.求算法~~~~先谢谢各位了·走过路过,帮忙顶一个哈
...全文
469 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
亚飞正传 2011-06-17
  • 打赏
  • 举报
回复
支持!谢谢了!
六六木木 2010-05-24
  • 打赏
  • 举报
回复
我不是高手,偶来看看、、
jimh 2010-05-24
  • 打赏
  • 举报
回复
一般,每个广告是按出现次数算的,所以,顶2楼,按权重计算出出现概率
-小蕾- 2010-05-24
  • 打赏
  • 举报
回复
是显示那个广告的几率,而不是显示广告的时间长短问题吧?所以顶2楼。。。
誰是方長 2010-05-24
  • 打赏
  • 举报
回复
不懂,进来看下
deknight 2010-05-24
  • 打赏
  • 举报
回复
mark
依然白板 2010-05-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 mngzilin 的回复:]
法一:

.若:
广告A=132,广告B=100,广告C=50
可以定义一个list<广告> list=new list<广告>();
然后在list中插入:A 13.2个,B 10.0个,C 5个,最后将list项随机排列

最后list依次显示的广告顺序和几率,就是按照你设定的数字计算出来的权重进行的安排。
===================================……
[/Quote]

第二个方法好。
捷哥1999 2010-05-24
  • 打赏
  • 举报
回复
设定一个权重:显示时间的比例,例如100,显示1秒,那么设置为1000的,就显示10秒。
chy_1015 2010-05-24
  • 打赏
  • 举报
回复
可以把权重当时间来使用
若:
广告A=132,广告B=100,广告C=50
那么 广告A显示132秒,然后广告B显示100秒,广告c显示50秒,又回到广告A显示132秒
mngzilin 2010-05-24
  • 打赏
  • 举报
回复
法一:

.若:
广告A=132,广告B=100,广告C=50
可以定义一个list<广告> list=new list<广告>();
然后在list中插入:A 13.2个,B 10.0个,C 5个,最后将list项随机排列

最后list依次显示的广告顺序和几率,就是按照你设定的数字计算出来的权重进行的安排。
=========================================================================
法二.

.若:
广告A=132,广告B=100,广告C=50

可以将A、B、C进行数字区间映射,即:广告A=[0,132],广告B=[133,233],广告C=[234,284]

然后定义random rd=new random()
int num=rd.next(0,284);
随机取到的num位于上面三个区间中的哪个,就是显示哪个广告
===========================================================
清风道禅 2010-05-24
  • 打赏
  • 举报
回复
额···没人么··
清风道禅 2010-05-24
  • 打赏
  • 举报
回复
嗯嗯·解决了·感谢2楼的思路,虽然我的办法笨了点不过还能用·呵呵·谢谢2楼·放出所有代码结贴:

/// <summary>
/// 权重运算
/// </summary>
public static class WeightsOper<T>
{
/// <summary>
/// 根据权重随机抽取一个实体
/// </summary>
/// <param name="obj">实体列表</param>
/// <returns>返回被抽取的实体</returns>
public static object GetWeight(IList<T> obj)
{
var list = GenerateWeightList(obj);
int ranNum = RandomNumber(list.Count - 1);
var result = list[ranNum];
return result;
}

/// <summary>
/// 生成随机数
/// </summary>
/// <param name="length"></param>
/// <returns></returns>
private static int RandomNumber(int length)
{
Random rad = new Random();
return rad.Next(0, length);
}

/// <summary>
/// 生成权重序列表
/// </summary>
/// <param name="data">原始数据</param>
/// <returns>返回数据列表</returns>
private static IList<T> GenerateWeightList(IList<T> data)
{
int weight = 0;
IList<T> list = new List<T>();
foreach (var one in data)
{
Type type = typeof(T);
var t = type.GetProperties();
int vweight = 0;
// Weight 为权重数 只支持整数
if (int.TryParse(type.GetProperty("Weight").GetValue(one, null).ToString(), out vweight))
{
weight += vweight;
for (int i = 0; i < vweight; i++)
{
list.Add(one);
}
}
}
return list;
}

}

免费试听地址:B站搜索JeeGit观看《JeeSite4.x数据权限教程》、《JeeSite1.2.7系列基础教程》、《JeeSite4.x系列基础教程》等相关课程! 郑重声明:购课前,请认真听完第一章 课程简介 建议实战人群直接听:第九章、第十章 学生人群、刚入门:全听       数据权限主要讲解内容包含第一章 课程简介31.1 课程目标31.2 适用人群31.3 课程简介31.4 环境要求31.5 课程知识点大全31.6 课程售价31.7 购课声明31.8 资源清单31.9 售后方式41.10 讲师介绍4第二章 权限基础42.1 权限模型概述4第三章 JeeSite权限管理模型123.1 JeeSite1.2.7 权限管理模型123.2 JeeSite4.x 权限管理模型123.3 JeeSite4.x权限设计的扩展13第四章 用户管理144.1 JeeSite4.x内置用户类型144.1.1 用户管理思路144.1.2 网站会员、员工、单位、个人登录视图配置154.2 用户数据权限类型164.3实战训练、调试、日志查看16第五章 机构管理16第六章 角色管理186.1 JeeSite4.x角色管理概述186.2 JeeSite4.x越级授权与菜单权重186.3 JeeSite4.x 越级授权可能存在的隐患极其解决方案196.4用户表如何区分非管理员、系统管理员、二级管理员206.5 角色权限注意事项206.6 角色授权数据范围使用注意事项216.7 为何用户不设置员工权限无效?236.8 岗位管理与角色分类的岗位分类与角色分类有何区别?23第七章 二级管理员23第八章 系统管理员238.1 系统管理员238.2 总结:何时使用超级管理员、系统管理员、二级管理员?23第九章 Jeesite数据权限调用239.1 JeeSite4.x数据调用基础239.2 JeeSite4.x 实现数据列权限推荐解决方案249.3多数源模式下数据权限bug简易解决方案249.4 JeeSite4.x 自定义扩展数据权限249.5支持全球地区、全球企业、全球机构、全球部门授权24第十章 JeeSite数据权限实战2410.1 案例一2410.2 案例二2410.3 案例三2510.4 案例四2510.5 案例五25第十一章 JeeSite4.x常见问题解答251.1数据权限管理的代码会公开吗,购买了能看吗?251.2 JeeSite数据权限教程是Thinkgem录制的吗?25第十二章 参考阅读2612.1、JeeSite官方文档2712.2、美国国家标准与技术研究院2712.3、中国国家标准化管理委员会2712.4、ITSEC欧洲安全评价标准2812.5、百度学术2812.6、开源框架2912.6.1 JeeSite2912.6.2 Casbin2912.6.3 Eladmin2912.6.4 Spring-boot-demo2912.6.5 Jeeplatform3012.6.6 Pig3012.6.7 Jeecg-boot3012.6.8 Jfinal3012.6.9 Guns3112.6.10 Zheng3112.6.11 Cloud-Platform3112.7 博文资源31

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧