1

勝率を計算し、プレーヤーに支払われた金額を返すメソッドを定義しました。私はもともと、このタスクを達成するための最も明白な方法としてこれを書いていましたが、コンピューターが実行する作業量を最小限に抑えるためにこれをリファクタリングする最良の方法を知りたいと思っています。これが私の機能です:

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;
 }
4

1 に答える 1

2

このスタイルを試してください。配列に入力する必要があります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<numElem ;i++){
        if(winningOdds <=payout[i].winningOdds){
            payOut = payout[i].payout;
            break;
        }
    }
    printf("Coins won - %d\n", payOut);

}
于 2013-02-04T07:19:26.763 に答える