core/queue: Call g_random_int_range() rather than random_range()

Using somebody else's library is probably better than relying on my own
random number function.

Implements #32: Remove custom RNG code
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
Anna Schumaker 2016-03-11 14:56:44 -05:00
parent bc513532c1
commit f1bcc7746e
2 changed files with 27 additions and 27 deletions

View File

@ -222,7 +222,7 @@ struct track *queue_next(struct queue *queue)
if (size == 1)
_q_iter_set(&queue->q_tracks, &queue->q_cur, 0);
else if (queue_has_flag(queue, Q_RANDOM)) {
pos = random_range(1, (size < 15) ? size : size / 3);
pos = g_random_int_range(1, (size < 15) ? size : size / 3);
pos += queue->q_cur.it_pos;
_q_iter_set(&queue->q_tracks, &queue->q_cur, pos % size);
} else {

View File

@ -298,7 +298,7 @@ static void test_rand_select()
unsigned int i;
struct queue q;
random_seed(0);
g_random_set_seed(0);
queue_init(&q, Q_ENABLED | Q_RANDOM, &test_ops);
/* Call next() on an empty queue. */
@ -318,56 +318,56 @@ static void test_rand_select()
* [val]: The value picked by q.next().
*/
/* rand() = 2, q = { <>, 1, [2], 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 } */
test_equal(queue_next(&q)->tr_track, 2);
/* rand() = 9, q = { <>, 1, 2, 3, 4, 5, 6, 7, 8, [9], 10, 11, 12, 13 } */
test_equal(queue_next(&q)->tr_track, 9);
test_equal(queue_size(&q), 12);
/* select = 6, q = { <1>, 3, 4, 5, 6, 7, (8), 9, 10, 11, 12, 13 } */
test_equal(queue_selected(&q, 6)->tr_track, 8);
/* select = 6, q = { 1, 2, 3, 4, 5, 6, (7), <8>, 10, 11, 12, 13 } */
test_equal(queue_selected(&q, 6)->tr_track, 7);
test_equal(queue_size(&q), 11);
/* rand() = 2, q = { 1, 3, 4, 5, 6, <7>, 9, 10, [11], 12, 13 } */
test_equal(queue_next(&q)->tr_track, 11);
/* rand() = 10, q = { 1, 2, 3, 4, [5], <6>, 8, 10, 11, 12, 13 } */
test_equal(queue_next(&q)->tr_track, 5);
test_equal(queue_size(&q), 10);
/* select = 7, q = { 1, 3, 4, 5, 6, 7, 9, (<10>), 12, 13 } */
test_equal(queue_selected(&q, 7)->tr_track, 10);
/* select = 7, q = { 1, 2, 3, <4>, 6, 8, 10, (11), 12, 13 } */
test_equal(queue_selected(&q, 7)->tr_track, 11);
test_equal(queue_size(&q), 9);
/* rand() = 4, q = { 1, [3], 4, 5, 6, 7, <9>, 12, 13 } */
test_equal(queue_next(&q)->tr_track, 3);
/* rand() = 6, q = { 1, 2, 3, [4], 6, 8, <10>, 12, 13 } */
test_equal(queue_next(&q)->tr_track, 4);
test_equal(queue_size(&q), 8);
/* select = 2, q = { <1>, 4, (5), 6, 7, 9, 12, 13 } */
test_equal(queue_selected(&q, 2)->tr_track, 5);
/* select = 2, q = { 1, 2, (<3>), 6, 8, 10, 12, 13 } */
test_equal(queue_selected(&q, 2)->tr_track, 3);
test_equal(queue_size(&q), 7);
/* rand() = 5, q = { 1, <4>, 6, 7, 9, 12, [13] } */
test_equal(queue_next(&q)->tr_track, 13);
/* rand() = 1, q = { 1, <2>, [6], 8, 10, 12, 13 } */
test_equal(queue_next(&q)->tr_track, 6);
test_equal(queue_size(&q), 6);
/* select = 1, q = { 1, (4), 6, 7, 9, <12> } */
test_equal(queue_selected(&q, 1)->tr_track, 4);
/* select = 1, q = { 1, (<2>), 8, 10, 12, 13 } */
test_equal(queue_selected(&q, 1)->tr_track, 2);
test_equal(queue_size(&q), 5);
/* rand() = 2, q = { <1>, 6, [7], 9, 12 } */
test_equal(queue_next(&q)->tr_track, 7);
/* rand() = 4, q = { <1>, 8, 10, 12, [13] } */
test_equal(queue_next(&q)->tr_track, 13);
test_equal(queue_size(&q), 4);
/* rand() = 1, q = { 1, <6>, [9], 12 } */
test_equal(queue_next(&q)->tr_track, 9);
/* rand() = 1, q = { [1], 8, 10, <12> } */
test_equal(queue_next(&q)->tr_track, 1);
test_equal(queue_size(&q), 3);
/* select = 1, q = { 1, (<6>), 12 } */
test_equal(queue_selected(&q, 1)->tr_track, 6);
/* select = 1, q = { <>, 8, (10), 12 } */
test_equal(queue_selected(&q, 1)->tr_track, 10);
test_equal(queue_size(&q), 2);
/* rand() = 1, q = { <1>, [12] } */
/* rand() = 1, q = { <8>, [12] } */
test_equal(queue_next(&q)->tr_track, 12);
test_equal(queue_size(&q), 1);
/* select = 0, q = { <1> } */
test_equal(queue_selected(&q, 0)->tr_track, 1);
/* select = 0, q = { (<8>) } */
test_equal(queue_selected(&q, 0)->tr_track, 8);
test_equal(queue_size(&q), 0);
/* q = { } */