Skip to main content
GameDev.net gamedev.net
🔒 Locked

Gradient Weighted random number

Started by treeway Oct 5, 2011 at 9:31 AM 2 replies 2k views
Original Post
treeway
treeway
Hi

I have two points (A,B) and I want to create a set of random points between the two, such that most points are close to A and the number of points decreases linearly towards B. Does anyone know a simple way to solve this?

Thanks
Rene Z
Rene Z
Random number generators generating values between zero and one with an uniform distribution are common. You can take the squared output of such a generator, and then use to to scale the vector (B-A) and add it to A.

In pseudocode:

uniformRand = rand();

outputPoint = A + uniformRand*uniformRand * (B-A);
Bregma
Bregma

I have two points (A,B) and I want to create a set of random points between the two, such that most points are close to A and the number of points decreases linearly towards B. Does anyone know a simple way to solve this?

It sounds like you need to generate random numbers on a geometric or exponential distribution. If you're using C++ and your development environment supports the current ISO standard, you can just use [font="Courier New"]std::geometric_distribution[/font] or [font="Courier New"]std::exponential_distribution[/font] from [font="Courier New"][/font]. If you're not in that situation, you can try to write them yourself, it's not that difficult.
Stephen M. Webb
Professional Free Software Developer
treeway
treeway
Thanks for the reply guys Rene Z's response worked perfectly for my situation (I'm not using C++), but I will look into std::geometric_distribution and std::exponential_distribution just out of interest, so thanks for that Bregma.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.