{ 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.