所以我有一个卡片 vector ,我正在尝试使用 random_shuffle 方法对其进行洗牌,但它并没有通过仅将第一项和最后一项传递给它来洗牌。所以我知道有第三个参数是自定义种子,它的东西,random_shuffle 说它没有发现任何函数重载这些参数(或类似的东西 - 我的程序是西类牙语)
基本上,我有两个 vector ,enemyCards 和 playerCards,它们的大小都是 5。
random_shuffle(enemyCards.begin(), enemyCards.end());
random_shuffle(playerCards.begin(), playerCards.end());
这编译但不工作,而
int myrandom (int i) { return std::rand()%i;}
random_shuffle(enemyCards.begin(), enemyCards.end(), myrandom);
random_shuffle(playerCards.begin(), playerCards.end(), myrandom);
甚至无法编译。
我做错了什么吗?
我在开头有一个 srand(),在代码中有其他工作的 rand(),所以它应该工作正常,只是 random_shuffle 没有。
这是编译器在使用 myrandom 方法时所说的:
Error 11 error C3867: 'comgrid::Game::myrandom': function call missing argument list; use '&comgrid::Game::myrandom' to create a pointer to member
Error 12 error C2780: 'void _STL::random_shuffle(_RandomAccessIter,_RandomAccessIter)' : expects 2 arguments - 3 provided
这很奇怪,因为在 cplusplus 上它真的是 1:1。
最佳答案
使 myrandom
成为您的 Game
类的静态成员函数。
关于c++ - random_shuffle 不允许我传递种子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21222450/