## distributions.Distribution


Distribution protocol defining the interface for probability distributions.


Usage

``` python
distributions.Distribution()
```


Any class implementing this protocol should provide a sampling mechanism that generates random values according to a specific probability distribution.


## Methods

| Name | Description |
|----|----|
| [sample()](#sample) | Generate random samples from the distribution. |

------------------------------------------------------------------------


#### sample()


Generate random samples from the distribution.


Usage

``` python
sample(size=None)
```


##### Parameters


`size: Optional[Union[int, Tuple[int, …]]] = None`  
The number/shape of samples to generate:

- If None: returns a single sample as a float
- If int: returns a 1-D array with that many samples
- If tuple of ints: returns an array with that shape


##### Returns


`Union[float, NDArray[np.float64]]`  
Random samples from the distribution:

- A single float when size is None
- A numpy array of floats with shape determined by size parameter


##### Examples

``` python
>>> dist = SomeDistribution(params)
>>> single_sample = dist.sample()  # Returns a float
>>> array_1d = dist.sample(10)  # Returns 1D array with 10 samples
>>> array_2d = dist.sample((2, 3))  # Returns 2×3 array of samples
```
