I wasn't sure how to ti
tle this but it's probably not exactly what the ti
tle sounds like.
I have seen a dozen people complain that they get nothing in the clearings despite bidding on over 50 throughout the time they've been active while others talk about how they got 10 in a week. Yes, it's all up to pure RNG, I understand that, but it just feels awful anyway. The solution shouldn't be "just bid on stuff you don't care about to raise your odds of getting literally anything." This suggestion isn't going to guarantee everyone a pet, of course, but it'll make it at least a little more balanced.
Now, both of these hinge on the process selecting the winners for one pet at a time but that can be arranged surely if it isn't already being done (it'd be a bit hard to select all at once anyway, one at a time is simpler because you just run through a list). Similarly, it'd be nice if they were selected in some sort of semi-random order and not alphabetically.
For both of these suggestions, as people get pets, a counter is added to their names/ids/whatever. This is ONLY for the current week and counters reset to 0 for each week's set of pets. So you get a pet, your counter is 1. You get another pet, your counter is 2, etc.
The first option is still slightly more chance of someone getting a windfall of pets but at least there's less chance of getting 0. Every time it's a new pet's turn to be selected, it first checks the list of people that bid on it for any people that have a counter of 0. If there are, it selects ONLY from the people with a counter of 0. This way, those with 0 pets won have higher chances of winning one. If no one has a counter of 0, then it selects from everyone in the list.
The second option is a slightly more tiered approach and is even more likely to spread out the pets semi-evenly. Every time it's a new pet's turn to be selected, find the minimum counter number in the list of people that bid on it and only select a winner from that number. So if 3 people bid on the pet and their counter numbers are 0, 0, and 0 then they all have an equal chance. If their numbers are 1, 3, and 1 then only people A and C have a chance at this pet because they've won 1 pet so far and the other person has won 3. This would be pretty simple to accomplish with a "MIN" check because I don't know a single higher-level coding language that doesn't have a MIN function to work with. Get the MIN counter number and then select from people in the list that have that counter number. (for the record, this is my preferred suggestion)
Please note: neither of these guarantee that you'll get a pet. If the only pet you bid on has been bid on by many people that also bid on few pets or is early in the random list, you might miss it and not be listed for any others. This is FINE. The point is to at least give people a fighting chance of not getting 0 while someone else gets 10 while they've both bid on all the same pets. I'm not looking to find a way guarantee getting a pet. Then people will only bid on 1 and know "this is almost definitely going to be mine" and that's not how it should work at all.