The primary reason for the current design that demands that a distribution is always configured correctly was performance. Distribution properties are expected to change only very rarely (in most of the use cases never), but the Sample method is expected to be called millions of times in a loop. So we'd like to avoid testing the parameters for every single sample that is generated.
An immutable design has a lot of advantages, as I've learned while being exposed to functional programming in the last couple years. For example, we could do some expensive computations that depend only on the parameters ahead of time, once, instead of repeating it on every call.
Also, more closely to your situation, I don't think it's the business of a mathematical library to maintain state of your application. Without knowing the details of you application, it seems you could get a cleaner and simpler design if you'd treat your distribution parameters explicitly as part of the data model of your GUI, and once you need to do something with the distribution use them to build the respecting distribution instance (or just use the static Sample functions of the distribution class).
An immutable design has a lot of advantages, as I've learned while being exposed to functional programming in the last couple years. For example, we could do some expensive computations that depend only on the parameters ahead of time, once, instead of repeating it on every call.
Also, more closely to your situation, I don't think it's the business of a mathematical library to maintain state of your application. Without knowing the details of you application, it seems you could get a cleaner and simpler design if you'd treat your distribution parameters explicitly as part of the data model of your GUI, and once you need to do something with the distribution use them to build the respecting distribution instance (or just use the static Sample functions of the distribution class).