Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement rand traits for Ratio ? #409

Open
pwnorbitals opened this issue Aug 27, 2021 · 2 comments
Open

Implement rand traits for Ratio ? #409

pwnorbitals opened this issue Aug 27, 2021 · 2 comments

Comments

@pwnorbitals
Copy link

pwnorbitals commented Aug 27, 2021

I'm especially interested in the implementation of Distribution<num::Ratio> for Standard and the UniformSampler backend to use gen_range() on custom types that wrap num::Ratio

@cuviper
Copy link
Member

cuviper commented Aug 27, 2021

Do you know how to actually achieve a uniform sample with a ratio? I think that's not easy, unless you just pick a specific denominator and then uniformly randomize the numerator. Is there a better way?

@clarfonthey
Copy link

I agree with cuviper -- I'm not 100% sure uniform randomness inside a range for Ratio is something that can be easily quantified. Most people will have their own idea of how the algorithm should work, and mathematically it's not really well-founded since all definitions of probability rely on real numbers, which can't easily be approximated with ratios. In the absolute case, if you wanted to generate a random Ratio<BigInt>, I don't think that it'd be desirable that there's a chance that the numerator and denominator can be arbitrarily large.

The only solution that makes sense to me is to just randomly generate a float and then convert that to a ratio to whatever precision you want. Which, can easily be accomplished by doing… just that.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants