我目前正在开发Android应用,我正试图从数据库表中获取一个随机值,如下所示:
| ID | Score|
| 1 | 20 |
| 2 | 5 |
| 5 | 5 |
| 6 | 5 |
| 14 | 15 |
(假设这些是表中唯一的值)
我想从这张表中获得一个随机值,其中ID为40%,ID为10%,ID为10%,等等... 如果这是可能的,你会怎么做呢?
答案 0 :(得分:1)
给定List<Integer>
,add()
每首歌曲索引score
次,Collections.shuffle()
列表,并按顺序播放。为了获得更好的结果,请跳过连续的重复项。更多here。
答案 1 :(得分:0)
任何已知数据库都没有随机选择的本机支持。如果你进行一些搜索,你可能会发现:
select * from my_table order by rand();
但是,当它试图对整个表格进行排序时,这是非常低效的。
如果您的数据集不是太大,您只需将整个表格拉入一个数组,然后从该数组中随机选择。
现在选择了wieghted,这更棘手。
一个更简单的版本可以解决这样的问题:
id)
和权重(weight
)的列表。cwieght
。r
。r >= cweight && r < cweight+weight
项目,如果您是游戏,可以使用二进制搜索搜索。这也有other smarter approaches,这取决于某些限制。