C# 广告权重算法,
2010-05-24 17:41
639 查看
/// <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;
}
}
相关文章推荐
- 根据权重随机选取指定条数记录的简单算法实现(C#)【含源代码】
- Java实现的权重算法(按权重展现广告)
- [广告]根据广告权重展示广告次数的算法
- 根据权重随机选取指定条数记录的简单算法实现(C#)【含源代码】
- 算法学习,单链表 C# 泛型实现
- 算法 - 折半查找(C#)
- c#组合算法
- [C#]Access 97/2K/XP/2K3数据库文件密码解密算法
- 【算法】C#快速排序类
- 转:C#数据结构和算法学习系列十----正则表达式
- 算法 - 插入排序(C#)
- 一个将阿拉伯数字转换成中文大写的好算法(C#)
- 算法 - 堆排序(C#)
- c#实现迷宫算法(转)
- [转]灰度图像的腐蚀算法和细化算法(C#代码)
- 找时间自行研究更好的算法(广告组)
- 灰色预测模型 c# 算法实现
- C# 中文分词[基于统计的朴素贝叶斯算法]
- PHP权重算法
- 插入排序算法--直接插入算法,折半排序算法,希尔排序算法(C#实现)