How to know when to use "someone" or "anyone"?
You are correct. There is no clear way to do this. Robin Lakoff's paper entitled "Some Reasons Why There Can't Be some ~ any Rule" is precisely about this situation.
Short summary of a few of the reasons:
- Any is a Negative Polarity Item, but some isn't.
- Many environments (like questions) allow NPIs like any, but don't disallow some.
- There are several kinds of any, including NPI any, and "Free Choice" any, as in
- Any idiot can solve this problem.
Someone can do it.
There is at least one person who can do it. The others may or may not be able to do, it is not stated.
Anyone can do it.
Every single member can do it. There is no one who cannot do it.
Use "someone" when some elements of a certain group are involved, but not all of the elements. So "someone can do it" means that not everyone from that group can do it, but some can.
Use "anyone" when all elements of a group are involved, but you don't necessarily mean all of them. So "anyone can do it" would mean that everybody in that group could do it, even though it doesn't take them all to do it.