# Can someone provide a simple algorithm for calculating an outcome based on User characteristics?

In these online games, say you are a person who has characteristics like:

1. level
2. strength
3. experience
4. defense ...

And now you walk into a room of 'others' that you want to e.g. recruit, how would you go about calculating this users ability to recruit?

Or any other common action in a online web game like a battle, or looking for items in the grass, or looking for food etc.

i.e. the ability or chances for success depend on the user's characteristics, and they get progressively harder as the user level ups etc.

-
I don't understand exactly what you mean, could you provide a bit more detail on your objective? – Nate Sep 17 '10 at 21:59
Is this something like a matchmaking outcome prediction mechanism? – Wight Sep 20 '10 at 3:08

This is a confusing, vague question but I'll give it a shot

First thing to consider is whether you want success chance to vary with or inversely too your factor for consideration(level, experience, defense, whatever)

your fomula can be a fraction with things that you want to improve your chances in the numerator and things you want to decrease your chances in the denomenator(this can just be 1 if nothing decreases your chances)

Suppose we wnat your chance to recruit someone to go down with your level(so it gets more difficult) but to go up with your strength. Our basic formula so far might look something like chance = strength/level

This would be a linear function. Depending on how you want things to scale you may want a different type of function. If you have a theoretical maximum you could for instance use a logarithmic function to taper off towards some value

chance = ln(strength/level)

With this you get diminishing returns.

You also may not want throw in multiplicative factors or additive constants to tweak the data if it doesn't feel right with how you want to progress.

chance = m * ln(strength/level) + k

Finally since this is a percent chance you may want to try and normalize it and convert into a percent. For this we divide by your best possible values for chance and multiply by 100

chance = 100 * (m * ln(strength/level) + k)/(m * ln(MAX_STRENGTH/MIN_LEVEL) + k)

I hope this helps.

-