**[**Back to MATH SWAG index**]** **[**Back to Main SWAG index**]** **[**Original**]**

*{
I'm working on some statistical process control Charts and am
learning/using Pascal. The current Chart Uses permutations and
I have been successful in determing the number of combinations
possible, but I want to be able to choose a few of those possible
combinations at random For testing purposes.
Through some trial and error, I've written the following Program
which calculates the number of possible combinations of x digits
with a certain number of digits in each combination. For example
a set of 12 numbers With 6 digits in each combination gives an
answer of 924 possible combinations. After all that, here is the
question: Is there a Formula which would calculate what those 924
combinations are? (ie: 1,2,3,4,5,6 then 1,2,3,4,5,7 then 1,2,3,4,5,8
... 1,2,3,4,5,12 and so on? Any help would be appreciated and any
criticism will be accepted.
}
***Program **permutations;
**Uses **Crt;
**Type **hold_em_here = **Array**[1..15] **of **Integer;
**Var **numbers,combs,bot2a : Integer;
ans,top,bot1,bot2b : Real;
hold_Array : hold_em_here;
**Function **permutate_this(number1 : Integer) : Real;
**Var **i : Integer;
a : Real;
**begin
**a := number1;
**For **i := (number1 - 1) **doWNto **1 **do **a := a * i;
permutate_this := a;
**end**;
**Procedure **input_numbers(**Var **hold_Array : hold_em_here; counter : Integer);
**Var **i,j : Integer;
**begin
For **i := 1 **to **counter **do begin
**Write(' Input #',i:2,': ');
READLN(j);
hold_Array[i] := j;
**end**;
**end**;
**Procedure **show_numbers(hold_Array : hold_em_here; counter : Integer);
**Var **i,j : Integer;
**begin
**WriteLN;
Write('Array looks like this: ');
**For **i := 1 **to **counter **do **Write(hold_Array[i]:3);
WriteLN
**end**;
**begin
**ClrScr;
WriteLN;
WriteLN(' Permutations');
WriteLN;
Write(' Enter number of digits (1-15): ');
READLN(numbers);
Write('Enter number in combination (2-10): ');
READLN(combs);
top := permutate_this(numbers);
bot1 := permutate_this(combs);
bot2a := numbers - combs;
bot2b := permutate_this(bot2a);
ans := top/(bot1*bot2b);
WriteLN(' total permutations For above is: ',ans:3:0);
WriteLN;
input_numbers(hold_Array,numbers);
show_numbers(hold_Array,numbers);
**END**.

**[**Back to MATH SWAG index**]** **[**Back to Main SWAG index**]** **[**Original**]**