Tried to create a random method that would query the database, obtain the number of rows in the database, and then grab a random number between 1 and the total number of rows to fetch a specific item in the database. It works alright, but not great, if there are less than ten entries in the database it will repeat the same entry about 4 out of ten times. I think I need a lead on a better method.
number = mDbHelper.getCount(mDbHelper.mDb);
Random generator = new Random();
n = generator.nextInt((int) number);
if(n <= 1){
n = 1;
}
Any ideas?
Based on your description, your database query is 1’s-based. Java
nextIntis 0’s-based, that is,.nextInt(10)will generate a random number between 0 and 9. So your proper solution is to change line 3 tothis will then give you what you need.
Because at present you are converting both [0] and [1] into 1 in lines 4 & 5, you are skewing your probability distribution. Your first entry is going to get counted twice. If you have an average of 5 entries in your
database, this would give you the2/5 = 40%hit rate you’re seeing.