免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2858 | 回复: 4
打印 上一主题 下一主题

[概率算法] 求教算法? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-05 11:37 |只看该作者 |倒序浏览
求教算法
现在有一成绩表:
id  分数
1  2
2  36
3  96
4  51
5  17
6  72
7  83
8  60
9  91
10 73
11 1
12 39
13 7
14 35
15 11
16 60
17 0
18 7
19 22
20 45
.......

随机抽取10名,但要分数越高的抽中的机率越大?该怎么实现?

我原先设想过分段处理的方法
就是先排序
然后划分 100-90, 90-80, 80-70 ,70-60,等
然后再分数高的段里随机抽取的数目多些?
但是由于人数,分数值都是动态的,不能固定每个段的抽取个数,
而且不管人数多少,抽取的结果最终是10名

[ 本帖最后由 HonestQiao 于 2005-11-5 12:23 编辑 ]

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
2 [报告]
发表于 2005-11-05 12:23 |只看该作者
原帖由 mailsyf 于 2005-11-5 11:37 发表
求教算法
现在有一成绩表:
id  分数
1  2
2  36
3  96
4  51
5  17
6  72
7  83
8  60
9  91
10 73
11 1
12 39
13 7
14 35
15 11
16 60
17 0
18 7
19 22
20 45
.......

随机抽取10名 ...



如果严格的来说,你这个需要先看 大学的概率与统计的教材,通过概率的相关知识建立数学模型,然后做算法.


http://w.yi.org/ftp/FAPM/mysql/z ... hematical_functions 看得到一个简单的设想:

RAND(N)
    返回在范围0到1.0内的随机浮点值。如果一个整数参数N被指定,它被用作种子值。

GREATEST(X,Y,...)
    返回最大(最大值)的参数。参数使用与LEAST一样的规则进行比较。

LOG10(X)
    返回X的以10为底的对数。

为什么列出以上的三个函数呢?

1. 取随机值
2. 取n个随机值里面最大的,得到a
3. 取分数的log10,得到b
4. b和a对比,b需要在a得一定范围,例如+-1

这样子有可能b偏向于更高分数的分布了。

论坛徽章:
0
3 [报告]
发表于 2005-11-05 13:13 |只看该作者
还是不太理解,斑竹,
经过这:
1. 取随机值
2. 取n个随机值里面最大的,得到a
3. 取分数的log10,得到b
4. b和a对比,b需要在a得一定范围,例如+-1

log10(x) 当0<x<100时 b的范围是0-2  
而a的范围是0-100
a和b怎么比较?

论坛徽章:
0
4 [报告]
发表于 2005-11-05 13:22 |只看该作者
哦,0<a<1,明白了

论坛徽章:
1
技术图书徽章
日期:2013-12-05 23:25:45
5 [报告]
发表于 2005-11-05 19:32 |只看该作者
原帖由 mailsyf 于 2005-11-5 13:22 发表
哦,0<a<1,明白了


那就好,你还可以加入一些适当的参数,或者多项表达式来进行调和。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP