you are viewing a single comment's thread
view the rest of the comments
[–] 2 points 1 month ago (2 children)

I'm not sure how you would ensure that the songs only show up once in that list, unless you do weird shit like re-rolling the seed until you find one where this happens to be true.

But also, that's a lot harder than just storing the shuffled list. 😅

  • source
  • parent
  • hideshow 2 child comments
  • [–] 2 points 1 month ago (1 child)

    You don't have to do anything fancy, I don't think. Initialise your RNG with the seed that you have stored, shuffle the list, and then rotate the list to get to the 'first song'. Every RNG seed will give a correct result.

    If you shuffle using eg. Durstenfeld/Knuth shuffle, which is O(n), then you can make a note of the 'first song's position' and do the rotation at the end of shuffling straight to the first song, in a single pass.

    You'll still get a repeatable ordering if songs are added or removed from the playlist - the order will be different, of course - and it takes a lot less storage to write down the seed and the ID of the 'first song', which might matter if you're using a crappy old music player with very limited storage space.

  • source
  • parent
  • hideshow 1 child comment