c++ - random_shuffle 不允许我传递种子

标签 c++ random vector shuffle random-seed

所以我有一个卡片 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/

相关文章:

c++ - 指向void的const指针的目的是什么

c++ - 模板类构造函数的特化

java - 调整 XORShift 生成器以返回最大值内的数字

c++在分配变量时未处理的异常访问冲突

c++ - 如何使用 GDI API 在 windows 桌面上绘图?

c++ - opengl 程序在 glBegin(GL_QUADS) 上崩溃

java - 如何创建多个文件,为每个文件生成随机名称

Python 我无法替换我的字符串值

r - 生成具有 0 或 1 个元素的特定长度的所有向量

两个不同 vector 中的 C++ 相同对象