differential-privacy
differential-privacy copied to clipboard
Expose RNG or Seeded mechanisms outside of `-testing`
Problem Description
Downstream libraries or academic researchers using differential-privacy
may desire to implement deterministic tests or substitute an alternative source of randomness, e.g., external random source.
However, RNG and seed-setting only appears to be implemented within algorithms::numerical-mechanisms-testing
. These classes are not designed for external use and cannot be linked against in some contexts (e.g., bzl testonly).
Proposed Solution
- Create a new RNGNumericalMechanism abstract class and non-testing RNGNumericalMechanismBuilder
- Implement non-testing
RNGXYZMechanism
and, optionally,SeededXYZMechanism
as convenience - Re-implement test
SeededXYZMechanism
classes with non-testing mechanisms - Optionally implement warning/notice for use
- Implement safe downstream deterministic test cases, e.g., in PyDP
Alternative
Rely on asymptotic test cases or non-reproducible examples/research.