So say I have to create a lineup of 9 players and I have a database full of hundreds of players. Each one has a possible point distribution and a salary value:

playera:[12,12,14,15,16,12,14],$4300 #example of low variance player
playerb:[7,2,30,2,4,20,26,30],$6350 #high variance
playerc:[17,15,26,14,8,10,8,10],$6200 #normal
If I pick an arbitrary point value, say 60, how do I construct a team that scores over 60 the maximum percentage of the time while staying within the salary cap?

I think it has something to do with markov chains or something but I don't know enough about that to really know.

Also, I'll assume for now that the player scores are independent.

My first thought was to construct a random team that met the salary cap and then select a "candidate" new player to replace player1 and if he improved the %of the time that team went over 60 points then keep him and move to the next player and if he didn't then select a new candidate. But the process needs to be more complex than that because sometimes the candidates that failed to improve the %over60 would actually have improved the team if only I had ALSO replaced one of(or two or three or six) the other players.

My basic familiarity with computer science and mathematics tells me that there is no computer(nor will there ever be one) that can iterate through a few hundred players and create and compare every possible 9 player combination. That's why I'm hoping to find a process that can approximate and simplify this problem. Thank you for any help you can provide.