标题:[求助]求一下随机取纪录的写法
只看楼主
suntao
Rank: 1
等 级:新手上路
帖 子:128
专家分:0
注 册:2006-7-23
 问题点数:0 回复次数:13 
[求助]求一下随机取纪录的写法

我想从数据库里随机取纪录,随机取好像
SELECT * from b order by newid()就行了,
但又要按字段a取,比如a的直的越大,他出现的几率就越高,有没有办法?
跪求高手指点,眼泪哗哗地~。。。

搜索更多相关主题的帖子: 纪录 数据库 随机 order 
2007-04-13 11:12
Kendy123456
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:62
帖 子:2720
专家分:0
注 册:2007-1-3
得分:0 

对A加权 自己定义权值

自己写一个函数比如叫 PartPerc 先取得max(a)和min(a) 然后对max(a)-min(a)这个区域里面的值加权
比如 return (a - min(a)) / (max(a)-min(a) )

然后 取得一个随机数
然后 select top 10 * from b where dbo.PartPerc(a) > @random order by newid() 这样a的值越大 记录被取到的几率就越高


然后你再从这个结果集里面随机取吧

2007-04-13 12:05
suntao
Rank: 1
等 级:新手上路
帖 子:128
专家分:0
注 册:2006-7-23
得分:0 

虽然没看懂,先谢谢斑竹,加权是什么意思?在什么地方写函数?求斑竹指点,呵呵,这个事搞定了,斑竹来南京,我请吃饭,呵呵!!!


2007-04-13 12:32
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
得分:0 

老大为什么要用随机数,还不如直接和一个比较大的数比,比如3/4什么的,随机数不容易控制啊,要是产生的随机数很小那函数不是白写了


26403021 sql群 博客 blog./user15/81152/index.shtml
2007-04-13 12:57
Kendy123456
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:62
帖 子:2720
专家分:0
注 册:2007-1-3
得分:0 
棉花糖... 如果不是随机数 怎么体现 几率 这个概念?

我的方案意思是: 每次产生一个随机数 然后把权值大于这个随机数的记录随机抽取出来
这样不就是数越大 被取到的机会越大么? 如果和固定数比 那比这小的 就永远取不到了
其实就是概率论了.

楼主 加权不懂没关系 就是给每个字段分配一个 系数 这个系数可以看做是被抽取的概率.
在数据库里面写函数 在存储过程里面调用函数 或者直接在查询分析器下调用函数都可以

2007-04-13 14:06
suntao
Rank: 1
等 级:新手上路
帖 子:128
专家分:0
注 册:2006-7-23
得分:0 

斑竹方便留个qq吗?


2007-04-13 14:11
棉花糖ONE
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:32
帖 子:2987
专家分:0
注 册:2006-7-13
得分:0 

老大的这个思想厉害,学习了


26403021 sql群 博客 blog./user15/81152/index.shtml
2007-04-13 14:32
Kendy123456
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:62
帖 子:2720
专家分:0
注 册:2007-1-3
得分:0 
单位封q的

2007-04-13 14:50
suntao
Rank: 1
等 级:新手上路
帖 子:128
专家分:0
注 册:2006-7-23
得分:0 

斑竹,@random是什么?


2007-04-15 08:17
帅哥一条虫
Rank: 1
等 级:新手上路
威 望:1
帖 子:65
专家分:0
注 册:2006-10-15
得分:0 
定义的随机变量
2007-04-15 13:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-131532-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.620297 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved