gpt4 book ai didi

c++ - 随机重排数组中的元素而无需重复

转载 作者:行者123 更新时间:2023-12-02 09:55:26 24 4
gpt4 key购买 nike

我有一个固定的大小为9的数组,我正在尝试对其进行随机重排序而不重复。

这是下面的代码:

class numbers{
int randomIndexCount;
public:
void randomArray( int numArray[],int size){
randomIndexCount = 0;
for (int i = 0; i < size; i++)
{
int RandomIndex = rand() % size;
randomIndexCount++;
numArray[i] = numArray[RandomIndex];
cout << numArray[i] <<endl;
}
}

int main(){
srand(time(0));
int numArray[9]= {1,2,3,4,5,6,0,0,0};
numbers n;
n.randomArray(numArray,9);
return 0;
}

到目前为止,我已经能够使用给定的元素对数组进行随机排序,但是我不确定如何摆脱重复。输出应为{1,2,3,4,5,6,0,0,0},但顺序随机。
我无法使用随机播放功能,只能使用rand。
我不确定如何删除重复的条目

这就是我的想法
1)使用给定的索引检查该值是否已经存在,然后跳过该行“numArray [i] = numArray [RandomIndex];”。但是,这种方法效率不高,因为我肯定这会很费时。
有没有办法删除重复的值,所以我的输出是这样的:
{0,1,0,6,2,0,5,3,4}

最佳答案

您应该在此行中交换元素numArray[i] = numArray[RandomIndex];,而不是分配。这将复制数据!这是交换:

int v = numArray[i];
numArray[i] = numArray[RandomIndex];
numArray[RandomIndex] = v;

关于c++ - 随机重排数组中的元素而无需重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60543704/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com