C++ 随机套牌问题
C++ Shuffle Deck Issue
我在C++中洗牌时遇到问题。我有一副纸牌课。在类中,我有一个对象向量,它们是套牌中的牌,我正在尝试洗牌量中的元素以洗牌。但是,我编写的函数似乎只是在每次迭代中移动所有内容,而不是将其与向量中的另一个随机元素交换。我确信我错过了一些非常简单和愚蠢的东西,但我只是还无法弄清楚。任何帮助将不胜感激。谢谢。
void shuffle(int seed = 0)
{
for (int i = 0; i < 100; i += 1)
{
for (unsigned int i = 0; i < deck.size(); i++)
{
card *swap = deck[i];
srand(time(NULL) + seed);
int temp = rand() % 52;
deck[i] = deck[temp];
deck[temp] = swap;
}
cout << "shuffled deck: ";
for (unsigned int i = 0; i < deck.size(); i++)
cout << deck[i]->compare() << " ";
cout << endl;
}
}
这是在我制作的概率函数中调用的,在一个循环中。随机函数的种子是循环的迭代。
这是一次迭代中部分输出的示例
只需初始化一次 RNG,例如在 main()
函数中
srand(time(NULL));
然后,最简单的洗牌方法之一是将每个项目从末尾交换到开头,并用前面的随机元素交换。请注意,要交换的物品可以与要交换的物品相同 - 这样物品也可以留在原地。
void shuffle()
{
for (int i = 0; i < 100; i ++)
{
for (unsigned int n = deck.size(); n > 1; --n)
{
unsigned swapPosition = rand() % n;
card *swap = deck[n-1];
deck[n-1] = deck[swapPosition];
deck[swapPosition] = swap;
}
cout << "shuffled deck: ";
for (unsigned int n = 0; n < deck.size(); n++)
cout << deck[n]->compare() << " ";
cout << endl;
}
}
相关文章:
- 在类中使用随机生成器时出现性能问题
- 代码输出随机符号,我不确定出了什么问题
- 这个随机字符串打印代码有什么问题?
- 我在理解 AVX 随机内部函数如何为 8 位时遇到一些问题
- C++ 制作一个随机数字/字母生成器,代码中有问题
- C++ 随机套牌问题
- 生成随机学生数学问题
- 随机化问题
- 再次随机化的问题
- 按行、列或随机从数组填充矩阵时出现错误索引问题
- 随机树CvRTrees持久性问题opencv
- 在C++中使用std::ofstream创建具有随机文件名的文件时出现问题
- 使用快速英特尔随机生成器(SSE2)会因堆栈问题而失败..已损坏
- 如何随机排列数组问题
- 使用梅森捻线机随机双生成的性能问题
- 随机化不会在 while 循环中发生。如何解决这个问题?C++
- 定义的随机问题
- 我在生成两副单独随机的纸牌时遇到问题
- 在matlab上生成有限制的随机向量时出现问题
- 我无法弄清楚这个随机发生器有什么问题