c - 具有从 1 到 52 的随机数的矩阵,不重复,但始终保持重复 1 个数字

标签 c random matrix repeat

我正在用 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/

相关文章:

c - 使用 dirent.h 浏览文件?

c# - 当从 C# 调用/编码(marshal)此结构到 C-DLL 时,为什么此字符串为空?

c# - 使用高斯分布生成 0 到 1 之间的随机数

opengl - 如何修复透视投影失真?

c - 在c中水平翻转图像

java - 如何生成一个 n 个随机正整数的序列,这些整数加起来等于某个值?

c++ - 随机数类内初始化

python - 为什么 a.dot(b) 比 a@b 快,尽管 Numpy 推荐 a@b

c++ - 如何使用 glm::mat4 手动正确编写旋转矩阵?

c - 使用 libcurl 和 CURLFORM_STREAM 将多部分表单上传到 S3