Q:

Algorithm to determine the "usual" cash payment amounts for a given price

You walk into a store, select several products, then go to the counter to pay your bill. The total is some amount (A). You reach into your wallet, purse, or pocket and put down some cash (P), where P >= A, and the cashier gives you change.
Given the set of coins and bills that are in circulation, what are the most likely values for P?
Some examples, assuming that the available bills are $5, $10, $20, $50 and $100, and the available coins are 5c, 10c and 25c:
A = $151.24P[1] = $160 (8x$20) or ($100 + 3x$20)P[2] = $155 ($100 + $50 + $5)
A = $22.65P[1] = $25 ($20 + $5)P[2] = $30 ($20 + $10)P[3] = $40 ($20 + $20)
A = $0.95P[1] = $1 (4 x 25c)P[2] = $5
Many of these numbers seem intuitive, but I have a feeling that the algorithm is difficult to pin down.

A:

There are also other factors, you are not likely to pay with 6 x 0.25, you would use 1 x 1.00 and 2 x 0.25 instead. Generally 0.25 would be no more then 3, 0.10 would be no more then 2, and 0.05 would be no more then 1.
Also in the real world, many people never bother with values less then 1.00, they alawys pay with bills and "keep the change". 
Same applies to 5.00, 10.00, and 20.00, for purchases more then a couple of dollars people will use a 5.00 or 10.00 instead. Of course 20.00 are the most common in circulation thanks to ATM machines.
What is this software for? are you actually trying model actual purchases and need accurate results, or a simple simulation which does not have to be rigorous? 

