It 1) picks a random topic (of all the cs., econ., math.* etc. topics) 2) finds the maximum amount of papers in that topic, and 3) queries for a random paper in that topic.
Note that this skews the distribution heavily in favor of topics that are less common, but it should get the job done. Suggestions for improvements are welcome.
Just visit:
The selection did not get much thought at all, just a Rust rand shuffle over all ids performed at first page visit and then cached: https://docs.rs/rand/latest/rand/seq/trait.SliceRandom.html#...
I had all IDs already computed for the previous/next article navigation feature, so it seemed fun to reuse them.
You could use the max number of paper in each topic to weight it and make the distribution uniform.