カードのベクトルがあり、random_shuffle メソッドを使用してシャッフルしようとしていますが、最初と最後のアイテムを渡すだけではシャッフルされません。したがって、カスタムシードである3番目のパラメーターがあることを知っています。random_shuffleは、これらのパラメーターでオーバーロードされた関数が見つからないことを示しています(またはそのようなもの-私のプログラムはスペイン語です)
基本的に、2 つのベクトル、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 であるため、これは奇妙です。