如何实现随机获取数据

没人回答?

实现方法取决于具体的应用场景以及对概率分布的要求。其实很少有场景是要求绝对随机的。比如你可以随便取一个时间点,然后取那之后创建的第一条数据。

很多场景需要,比如 美拍 和 快手 , 在热门列表中, 每次刷新 都会获取随机的热门列表

很实用的,随机获取数据列表

我的应用中也有获取随机数据的场景。
目前没有好的思路。

确实是,非常多的应用场景需要获取符合条件的随机数据.比如很多用户发的状态,新用户登录,需要从记录中随机获取一条,用时间去随机虽然可行,但是实现方案并不是很好,因为我也无法得知哪个时间点有未读状态.希望官方能够提供根据查询条件,能够获取随机结果的接口.

是的,建议增加随机方法

我也碰到这个问题,神烦中

skip(random)

影响性能但是满足功能

感谢反馈,我们内部会进一步讨论这个需求。

var query = new AV.Query(ClassName);
query.skip(random);
query.find();

如果 random 比较大的话,性能是很差的。建议还是随机一个时间点来查之后的第一条数据。

对。如果只是随机的话,随机时间然后
query.greatethan('createdAt', randomTime);
query.first()
是一个比较好的解决办法。

我目前的做法是先用count统计总数,然后在随机用skip跳过,但是不知道count算不算一次请求次数,如果算,就有点浪费了。强烈建议增加随机获取方法!!!

query.count 算 1 次 API 请求

用 skip 很影响性能。

建议你给每个对象增加一个值为 0.0 ~ 1.0 之间的随机浮点数的属性 randProp。要随机取一个对象的时候,生成一个 0.0 ~ 1.0 之间的随机数 randNum,然后用查询找按 randProp 排序后 randProp > randNum 的第一个对象。

1 人赞了这个帖子.