0
$\begingroup$

I am trying to create an equation that will generate a Gaussian distribution such that y = the sum of f(x) in a series of integers 1->28. I have y and want to know what the value of x at each integer in the series should be, make sense?

I'll explain a different way to illustrate what I'm looking for:

If I have $100 and I want to give away that money over 28 days in increments such that it creates a nice bell curve over the 28 day period, what would that equation be? And how can I tweak it to make the curve steeper or flatter and/or adjust the points of inflection?

Edit:

I'll try to make this a little more clear, and please forgive me for using what I'm sure is incorrect notation. I need a function where y = f(x) produces a Gaussian distribution. I know that the sum of y across the series x = {1,2,3...,28} is 100. What is a formula that will allow me to solve for y given the values of x?

2 Answers 2

1

Take the bell curve and select some "window" (part of the X-axis). Divide your window into $28$ equal parts, and replace each part by the integral of the bell curve on that interval. Normalize what you get so that it sums to $100$. Round everything up. Now make some small adjustment to get it to sum to exactly $100$.

Edit: Here is an algorithm. Try it with $W=2$ or $W=3$.

void calc_array(int res[28], double W) {
  double sum = 0, a[28];
  for (int i = 0; i < 28; i++) {
    double x = (i - 14) * W/14;
    sum += a[i] = exp(-x*x/2);
  }
  int sum2 = 0;
  for (int i = 0; i < 28; i++)
    sum2 += round(res[i] * 100/sum);
  // you can do better than that, but I'll leave that to you
  res[13] += 50 - sum2/2;
  res[14] += 50 - (sum2+1)/2;
}
  • 0
    Can you give me an example that I could use to create an algorithm in a standard programming language?2011-05-26
  • 0
    This worked great! Any idea how I would alter the equation to make the curve steeper on just left or right of center or how I could shift the peak one way or the other?2011-05-26
  • 1
    In order to shift the peak, replace the 14 in "i - 14". If you want the steepness to be different, say instead of one W have two W1/W2, then replace the entire statement by something like "if (i < 14) x = (i - 14) * W1/14; else x = (i - 14) * W2/14;"2011-05-27
1

Not sure I understand your question, but seems to me you could let $$A=50(e^{-1}+e^{-9}+e^{-25}+\cdots+e^{-729})^{-1}$$ and then use $f(x)=Ae^{-(2x-29)^2}$. The exponents in the expression for $A$ are the squares of the odd numbers from $1$ to $27$, which are also the exponents that will show up in the formula for $f(x)$ as $x$ goes $1,2,3,\dots,28$.

EDIT: It occurs to me that the binomial is a good approximation to the bell curve. The 28 numbers $27\choose0$, $27\choose1$,..., $27\choose{27}$ add up to $2^{27}$. Let me abbreviate the number $100/2^{27}$ by $B$. Then you could give out ${27\choose0}B$ the first day, ${27\choose1}B$ the second day, etc., to ${27\choose27}B$ the last day.

FURTHER EDIT: In response to the comment that the first gives a curve that's too steep (too concentrated at the center), there are ways to fiddle that. You could take the numbers $(100/B)e^{-(2x-29)^2/30}$ for $x=1,2,\dots,28$, where $B=\sum_1^{28}e^{-(2n-29)^2/30}$. If you don't like that shape, you could replace the $30$ with something bigger (to make the numbers flatter) or smaller (to make the numbers steeper).

Similarly, you can fiddle with the binomials; pick some number $n$, let $$A={2n+27\choose n}+{2n+27\choose n+1}+\cdots+{2n+27\choose n+27}$$ and then let your gifts be $${100\over A}{2n+27\choose n},{100\over A}{2n+27\choose n+1},\dots,{100\over A}{2n+27\choose n+27}$$ Again, the bigger $n$ you choose, the flatter the numbers you get.

  • 0
    Assuming that you did understand what I was after, how could I get this into a formula so I could plug in the target sum ($100 in my example above) and the day (between 1 and 28) and get the amount I should give away on that day?2011-05-26
  • 0
    The formula is $f(x)=Ae^{-(2x-29)^2}$. For, say, day 17, you put in $x=17$; the amount to give away on day 17 is $f(17)=Ae^{-25}$. Here, $A$ is the number in the displayed equation; you have to calculate that number first.2011-05-26
  • 0
    [0]=>float(0) [1]=>float(3.4075443614396E-315) [2]=>float(5.0011241012202E-270) [3]=>float(2.4622825895526E-228) [4]=>float(4.0667951949457E-190) [5]=>float(2.2532576489861E-155) [6]=>float(4.1880663270157E-124) [7]=>float(2.611321790927E-96) [8]=>float(5.4619960211382E-72) [9]=>float(3.8325383633254E-51) [10]=>float(9.0212306531447E-34) [11]=>float(7.1234307686304E-20) [12]=>float(1.8869342761374E-9) [13]=>float(0.016767506522691) [14]=>float(49.98323249159) [15]=>float(49.98323249159) [16]=>float(0.016767506522691) [17]=>float(1.8869342761374E-9) Comment won't allow enough space for the rest2011-05-26
  • 0
    The comment above shows results I got with a calculated value for A of 135.86851260953 so something seems wrong as it produces an extremely steep curve2011-05-26