android - 获取范围之间的随机数,不重复

标签 android sql sqlite random

全部 我需要逻辑上的帮助。我在数据库中有 100 行,并且随机获取所有行,没有重复,我使用了下面的代码。

public ArrayList<Rows> getRows(){
    ArrayList<Rows> myRaw=new ArrayList<Rows>();
    Cursor rawCursor=this.db.query(DB_TABLE, null, null, null, null, null, null);
    if(rawCursor.getCount()>0){
        Random rng = new Random();
        rawCursor.moveToFirst();
        do {

             // Ideally just create one instance globally
            ArrayList<Rows> generated = new ArrayList<Raws>();
            for (int i = 0; i < 371; i++)
            {
                while(true)
                {
                    Integer next = rng.nextInt(371) + 1;
                    rawCursor.moveToPosition(next);
                    Rows raw=new Raws(rawCursor.getInt(rawCursor.getColumnIndex("_id")),rawCursor.getString(rawCursor.getColumnIndex("raw")),rawCursor.getInt(rawCursor.getColumnIndex("fav")));
                    if (!generated.contains(raw))
                    {
                        // Done for this iteration
                        generated.add(raw);
                        break;
                    }
                }
            }

            myRaw=generated;

        } while (rawCursor.moveToNext());
        rawCursor.close();
    }
    return myRaw;
}

谢谢大家

最佳答案

您可以告诉数据库按某些random number对记录进行排序。 :

cursor = db.query(DB_TABLE, null, null, null, null, null, "random()");

关于android - 获取范围之间的随机数,不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12974202/

相关文章:

android - 在 Android 中创建选项菜单

mysql - 如何加快此 SQL 查询速度

sqlite - 日期参数在Delphi SQLite查询中误读

mysql - 在列名中使用保留字

javascript - Phonegap SYNTAX_ERR 上的 SQLITE 查询错误

node.js - 错误 : "Please install sqlite3 package manually" when I execute "sequelize db:migrate"

Android Studio 集成测试无法解析符号 AndroidJUnit4

Android:将图像转换为字节数组

java - 如何修复此代码所有 android 屏幕

java - AES256 的 Oracle DBMS_CRYPTO.ENCRYPT 初始化 vector 长度