如何在C ++中输出两组不同的随机数?

时间:2017-04-07 02:53:16

标签: c++ function random

到目前为止,这是我的代码:

struct compareAPlayerByName {
    boolean operator()(const aPlayer& a, const aPlayer& b) {
        return a.name < b.name;
    }
};
void sortByName(aCompetition& c) {
    sort(&c.player[0], &c.player[c.numPlayers], compareAPlayerByName());
}

我的问题是经销商和玩家的随机(骰子)滚动始终是相同的。输出将是这样的例如:

#include <iostream>
#include <time.h>
#include <stdio.h>      
#include <stdlib.h>  
using namespace std;

int DealerRoll(int dealerRoll)
{
        srand (time(NULL));
    for (int dealerCount = 1; dealerCount <= 3; dealerCount++)
    {
    dealerRoll = rand()% 6+1;
    cout << dealerRoll << " ";
    }
    return dealerRoll;
}
int PlayerRoll(int playerRoll)
{

        srand (time(NULL));
    for (int playerCount = 1; playerCount <= 3; playerCount++)
    {
    playerRoll = rand()% 6+1;
    cout << playerRoll << " ";
    }
    return playerRoll;
}

int main()
{
    int dealerRoll;
    int playerRoll;

    cout << "Dealer's Roll: " << endl;
    DealerRoll(dealerRoll);
    cout << endl << "Your Roll: " << endl;
    PlayerRoll(playerRoll);
system ("pause");
return 0;
}

如何让播放器与经销商不同?

Dealer's Roll: 
1 6 3 
Your Roll: 
1 6 3  

1 个答案:

答案 0 :(得分:5)

这是因为你不断重置你的种子。这需要非直观地完成,否则你每次都会返回相同的看似随机的数字。 (实际上确实有特定的用例,这是你想做的事情)只执行一次在执行的顶部一次,而不是每次连续循环执行你的函数。< / p>

srand (time(NULL));

参考另一个关于该主题的更深入的答案。

srand() — why call it only once?