differential-privacy icon indicating copy to clipboard operation
differential-privacy copied to clipboard

Expose RNG or Seeded mechanisms outside of `-testing`

Open mjbommar opened this issue 3 years ago • 0 comments

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

  1. Create a new RNGNumericalMechanism abstract class and non-testing RNGNumericalMechanismBuilder
  2. Implement non-testing RNGXYZMechanism and, optionally, SeededXYZMechanism as convenience
  3. Re-implement test SeededXYZMechanism classes with non-testing mechanisms
  4. Optionally implement warning/notice for use
  5. Implement safe downstream deterministic test cases, e.g., in PyDP

Alternative

Rely on asymptotic test cases or non-reproducible examples/research.

mjbommar avatar Feb 08 '22 10:02 mjbommar