gpt4 book ai didi

C:创建具有唯一数字的二维数组

转载 作者:太空宇宙 更新时间:2023-11-04 03:19:28 26 4
gpt4 key购买 nike

我想使用随机数在 C 中创建一个多维数组,但每一行的数字都是唯一的。我该怎么做呢 ?这是代码:

int main(int argc, char **argv)
{

int playfields [12][7];
int rows, columns;
int i;
int t,j;
int number[7], n=0;


for (i = 0; i<35; i++) {
number[i] = i +1;
}

for(rows = 0; rows < 12; rows++) {
for (columns = 0; columns < 7; columns++) {
j = (rand() % 35) + 1;
t = number[j];
number[rows] = t;
}
}


for(rows = 0; rows < 12; rows++) {
for (columns=0; columns<7; columns++) {
playfields[rows][columns] = number[n++];
printf("%d ", playfields[rows][columns]);
}
printf("\n");
}

return 0;

}

最佳答案

一种简单的方法是在 1d 数组中分配从 184 的数字,然后应用 Fisher Yates algorithm洗牌。初始数字集之间的唯一性确保了您提到的标准之一。将 1d 数组中的数字分配给 2d 数组。这会在 2d 数组中生成随机数字序列。

您也可以将其更改为适用于二维数组

srand(time(NULL));
...
for (int i = row - 1; i > 0; i--) {
for (int j = col - 1; j > 0; j--) {
int rr = rand() % (i) ;
int cc = rand() % (j) ;

int t = arr[i][j];
arr[i][j] = arr[rr][cc];
arr[rr][cc] = t;
}
}

关于C:创建具有唯一数字的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47855769/

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