我正在用 C 编写一个项目,我正在尝试创建一个矩阵,其中包含从 1 到 52 的随机数,不重复,但始终保持重复 1 个数字!
void baralhar(int b[]){
int x,y,r;
for(x=0;x<53;x++){
r=rand() % 52+1;
for(y=0;y<=x;y++){
if(r==b[y])
{
y=0;
r=rand() % 52+1;
}
}
b[x]=r;
}
}
输出: 49 2 3 23 15 50 29 12 33 37 6 21 9 16 14 38 41 31 36 10 39 43 40 30 48 7 4 8 5 18 34 46 1 47 27 13 51 42 17 19 25 20 26 35 28 52 49 45 24 32 22 44
在此示例中,您可以看到数字 49 是重复的。你能帮忙吗?
最佳答案
您用 52 个不同的数字填充一个 53 元素的数组。显然,你会重蹈覆辙。
如评论中所述,请检查如何排列 52 个数字,并使数组大小与 52 匹配。
编辑:此外,您将始终重复第一次绘制(位置 0 的元素)。您重置 y=0,但当到达循环末尾时,y 计数为 1。因此位置 0 不受重复保护。
关于c - 具有从 1 到 52 的随机数的矩阵,不重复,但始终保持重复 1 个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21056263/