libsaria: More next() tuning
Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This commit is contained in:
parent
c0fdcb4d93
commit
c3bb6119e5
|
@ -50,19 +50,25 @@ namespace libsaria
|
|||
|
||||
Track *Playlist::pick_random()
|
||||
{
|
||||
unsigned int n, size = get_size();
|
||||
unsigned int n, range = get_size();
|
||||
unsigned int min = 1;
|
||||
|
||||
if (size == 0)
|
||||
if (range == 0)
|
||||
return NULL;
|
||||
|
||||
if (size == 1) {
|
||||
if (range == 1) {
|
||||
cur = plist.begin();
|
||||
return picked_next();
|
||||
}
|
||||
|
||||
if (size > 10)
|
||||
size /= 2;
|
||||
n = rand() % size;
|
||||
if (range > 10) {
|
||||
min = (range / 10) + (range % 5);
|
||||
range = (range / 2);
|
||||
} else
|
||||
range *= 2;
|
||||
n = min + (rand() % range);
|
||||
//println("min: %u, max: %u, n: %u", min, min + range, n);
|
||||
|
||||
for (unsigned int i = 0; i < n; i++)
|
||||
incr_iter();
|
||||
|
||||
|
|
Loading…
Reference in New Issue