Feat: DummyClassifier strategy that produces randomized probabilities

### Describe the workflow you want to enable

# Motivation

The `dummy` module is fantastic for testing pipelines all the way up through enterprise scales. The [strategies](https://github.com/scikit-learn/scikit-learn/blob/98ed9dc73/sklearn/dummy.py#L374) offered in the `DummyClassifier` are excellent for testing corner cases. However, the strategies offered fall short when testing pipelines that include downstream tasks that depend on moments of the predicted probabilities (e.g. gains charts).

This is because the existing strategies do not include sampling _random probabilities_.

## Proposed API:

Consider adding a new strategy with a name like `uniform-proba` or `score-random` or something similar that results in this behavior for binary classification:

```python
print(DummyClassifier(strategy="uniform-proba").fit(X, y).predict_proba(X))
"""
[[0.5651713  0.4348287 ]
 [0.36557341 0.63442659]
 [0.42386353 0.57613647]
 ...
 [0.30348692 0.69651308]
 [0.59589879 0.40410121]
 [0.32664176 0.67335824]]
"""
```

### Describe your proposed solution

## Proposed implementation

I had something like this in mind:
```python
class DummyClassifier(MultiOutputMixin, ClassifierMixin, BaseEstimator):
    ...

    def predict_proba(self, X):
        ...
        for k in range(self.n_outputs_):
            if self._strategy == "uniform-proba":
                out = rs.dirichlet([1] * n_classes_[k], size=n_samples)
                out = out.astype(np.float64)
            ...
```

Similar to the `"stratified"` strategy, this simple implementation relies on `numpy.random`, in this case the [`dirichlet`](https://numpy.org/doc/2.0/reference/random/generated/numpy.random.RandomState.dirichlet.html) distribution. By setting all the `alpha`s to 1, we are specifying that the probabilities of each class are equally distributed -- in contrast, the `"stratified"` strategy effectively samples from a dirichlet distribution with one alpha equal to 1 and the rest equal to 0.


### Describe alternatives you've considered, if relevant

_No response_

### Additional context

I am happy to make the PR. The biggest question is what the strategy string should be.

Thank you for reading 🙏.

COMMENT:
Maybe a possible fix for the concerns and needs expressed above would be to:

- change `strategy="uniform"` such that `predict_proba` continues predicting uniform values, but `predict` will seed its rng from a `joblib.hash(X_test[test_sample_idx])` so that it is deterministic for a given `X_test` value, but keep the predictions uninformative related to the distribution of the features.
-  then we could introduce a new "dirichlet" strategy where the `predict_proba` values them-selves would be sampled from a dirichlet distribution (configured such that `.predict_proba(X_train).mean(axis=0) ~= one_hot(y_train).mean(axis=0)`). The `predict_proba` sampling would be row-wise seeded from hashed X_test rows to keep the prediction function deterministic given a fixed `X_test` while also keeping the features non-informative w.r.t. the target values (under the assumption that `joblib.hash` implements a [one-way hash function](https://en.wikipedia.org/wiki/One-way_function) which I think is a reasonable assumption). The `predict` function would return the `clf.classes_[clf.predict_proba(X_test).argmax(axis=1)]` as usual.

EDIT: the two items described above can (and should probably) be implemented in independent PRS.

Labels: New Feature, Needs Decision - Include Feature