-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Revisit shared pool rerolls #78
Comments
Revisiting this considerably later: Shared rerolls break indistinguishability---if you're trying to maximize the sum of d6s, if you roll a bunch of 4s, you will stick with 4s even if you would have rolled 6s on the rerolls. On the other hand if you rolled the 6s first, you get those 6s. As an outside routine, we would want a
The first could be decomposed into the last two if this is better for performance (probably). Maybe we can express this as a Extending to decks seems plausible though would take some extra care. |
Another question is what the motivation is. 5e D&D has shared rerolls in Empowered Spell, but this is probably better solved by a multiset evaluator since the lowest dice get rerolled first. |
After chatting with @alexrecarey I'm going to try to push this forward. Potential questions: Allow for prioritizing outcomes to reroll?With this we could handle cases like Empowered Spell with something like With regards to performance, the question would be how to avoid having to materialize the specific rerollable outcomes. Perhaps I can do the split first, then use Interpret the limit on the number of rerolls as per-depth or total?Limiting the total number of rerolls rather than per-depth seems probably a bad idea:
What default depth to use?Currently the single-die Another option is to effectively only allow We could also make
|
It seems the easiest thing to do when selecting which dice to reroll is to pick at random. However, this seems less than intuitive for the user. Options:
|
Possible signature:
Should this return the sum, or some sort of
OutcomeCountGenerator
?If we go with some sort of distribution across pools, should the generator emit all possible counts at a time? Or do we treat each possible generator separately? It's possible that memoization works better in this case.
Using a
Die
of generators has some problems:evaluate(die_of_generators)
wants to evaluate using the generators themselves as outcomes, or to evaluate for each possible generator. So we'd still need a flag or separate method.Die
methods seem applicable to generators. In fact, it's more generator methods that would apply.The text was updated successfully, but these errors were encountered: