     return (a, b)
 }
 
-//===----------------------------------------------------------------------===//
+//===------------------------------------------------------------------------------------------===//
 // Distributions
-//===----------------------------------------------------------------------===//
+//===------------------------------------------------------------------------------------------===//
+
+public protocol RandomDistribution {
+  associatedtype Sample
+  func next<G: RandomNumberGenerator>(using generator: inout G) -> Sample
+}
 
 @_fixed_layout
-public final class UniformIntegerDistribution<T: FixedWidthInteger> {
+public final class UniformIntegerDistribution<T: FixedWidthInteger>: RandomDistribution {
     public let lowerBound: T
     public let upperBound: T
 

import Glibc
#endif

//===----------------------------------------------------------------------===//
// Random number generators
//===----------------------------------------------------------------------===//

/// A type that provides seedable deterministic pseudo-random data.
///

}

@_fixed_layout
public final class UniformFloatingPointDistribution<T : BinaryFloatingPoint>: RandomDistribution
  where T.RawSignificand : FixedWidthInteger {
    public let lowerBound: T
    public let upperBound: T
