用另一个阵列将阵列改组
Shuffling an Array with another array
我正在尝试混合数组顺序,而不会丢失任何内容。这是我想将其混合的卡片。
我有多个我用来通信的文件,这是问题所在的地方:
class Deck{
private:
PlayingCard deck[52];
public:
Deck();
void shuffle();
double draw();
void printDeck();
};
因此,我创建了一个甲板的实例,我能够正确打印整个甲板,我只想将其混合:
void Deck::shuffle(){
int randNum;
string tmp;
srand(time(NULL));
for(int i = 0; i < 52; i++){
randNum = rand()%52;
deck[i] = deck[randNum];
}
}
所以我知道我正在分配一个随机数,没有什么可以阻止它两次获得相同的随机数。我不确定是否有另一种方法可以在不拿两次的情况下调用随机号码,或者我应该致电另一种方法。因为我的使用方式将卡片混合在一起,但不能两次打印相同的卡片。
deck[i] = deck[randNum];
这将产生不正确的行为,因为您正在制作第二副副本[randnum](只要randnum!= i)
如果要交换两个数字,则可以做
PlayingCard tmp = deck[i];
deck[i] = deck[randNum];
deck[randNum] = tmp;
或
std::swap(deck[i], deck[randNum);
或正如Igor Tandetnik指出的那样,您可以使用std :: Shuffle代替整个环。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 运行同一解决方案的另一个项目的项目
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- C++从另一个类访问公共静态向量的正确方法是什么
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 使用std::transform将一个范围的元素添加到另一个范围中
- 将积分类型的数组作为另一个不相关的积分类型的阵列进行访问的安全且符合标准的方法
- 为什么一个二维阵列会导致赛段故障,而另一个则不会导致?
- 内存C++复制是否将内存地址复制到另一个阵列
- 如果在C 中已经回荡了另一个相同值的阵列元素,请防止循环回荡
- 用另一个阵列将阵列改组
- 查找一个阵列包含在另一个C++中的次数
- C++将 2D 阵列的一部分复制到另一个 2D 阵列,性能
- 用另一个替换多维阵列
- 如何确定另一个结构内的结构阵列的长度
- visual C++将整数的二维数组插入到另一个整数的二维阵列中
- 算法将一个硬币矩阵转移到另一个硬币阵列
- 用C++将一个字符数组中的四个元素读入另一个字符阵列
- 将2d阵列的实际值复制到另一个2d阵列c++