I have noticed that the two 1Password clients that I have been using have different character-based random password generators. 1Password 7.2.4 on macOS has sliders to select the number of digits and the number of symbols in the resulting password, whereas 1Password 7.0.9 on Android has simple toggle switches to control whether or not those character classes are included as candidates. I am curious about just how much password entropy is being sacrificed on the macOS version (where, frustratingly, it is more convenient to update passwords than on a mobile device). I was also interested in where I should set those sliders to maximize password entropy (assuming no antiquated character restrictions).
Not knowing the details of either password generator algorithm, I made some assumptions about how they work based on observation of the output. I'm guessing the Android version simply chooses a random character from the 94 printable non-whitespace ASCII characters for each position. This is trivial to calculate the possibilities. The macOS version is much trickier, because we first need to find the number of permutations of the character class entries in the resulting password. The math is a bit complicated to describe, so I won't go into it in detail here, but I did make a spreadsheet to play around with it and test my guesses.
It's possible that I've made an error (and if so, I would welcome corrections), but I'm fairly confident in what I found:
I'm guessing the more complex generator is the older one, and was designed to satisfy some of those character restrictions in passwords. In my recent experience with web sites that still use those types of restrictions, this doesn't help, as they almost always have some secret list of symbols that are allowed (often different than the published list), and I need a much more specific set of controls to satisfy them. I would much prefer the version of the generator used by Android, as requires less of me and also has more possibilities for the output.