重构重复的保护声明

我已经定义了一种计算获胜几率的方法,并返回支付给玩家的金额。 我最初写这是完成此任务最明显的方式,但我真的想知道重构这个的最佳方法,以最大限度地减少计算机的工作量。 这是我的function:

int getPay(int winningOdds, int payOut) { winningOdds = rand() % MAXIMUM_ODDS + MINIMUM_ODDS; if(winningOdds == 1) { payOut = 4000; printf("Jackpot! - %d\n", payOut); } else if(winningOdds <= 2) { payOut = 1000; printf("Coins won - %d\n", payOut); } else if(winningOdds <= 3) { payOut = 500; printf("Coins won - %d\n", payOut); } else if(winningOdds <= 40) { payOut = 100; printf("Coins won - %d\n", payOut); } else if(winningOdds <= 50) { payOut = 50; printf("Coins won - %d\n", payOut); } else if(winningOdds <= 75) { payOut = 25; printf("Coins won - %d\n", payOut); } else if(winningOdds <= 1000) { payOut = 10; printf("Coins won - %d\n", payOut); } else if(winningOdds <= 3000) { payOut = 5; printf("Coins won - %d\n", payOut); } else if(winningOdds <= 5000) { payOut = 3; printf("Coins won - %d\n", payOut); } else if(winningOdds <= 10000) { payOut = 1; printf("Coins won - %d\n", payOut); } return payOut; } 

尝试这种风格,你需要填写Payout数组

 struct Payout{ int winningOdds, payOut; }; int getPay(int winningOdds, int payOut) { Payout payout[] = {{1,4000},{2,1000}....}; int numElem = sizeof(payout)/sizeof(payout[0]); winningOdds = rand() % MAXIMUM_ODDS + MINIMUM_ODDS; for(int i=0;i