C:创建具有唯一数字的二维数组
我想在C中使用随机数创建一个多维数组,但每行的数字都是唯一的。我该怎么做?代码如下:C:创建具有唯一数字的二维数组,c,for-loop,multidimensional-array,random,unique,C,For Loop,Multidimensional Array,Random,Unique,我想在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++
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;
}
int main(int argc,char**argv)
{
国际游乐场[12][7];;
int行、列;
int i;
int t,j;
整数[7],n=0;
对于(i=0;i简单的一种方法是将1d
数组中的1
中的数字分配到84
,然后将其应用于洗牌。初始数字集之间的唯一性确保了您提到的标准之一。将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;
}
}
使用随机数创建堆栈,然后将堆栈放入二维数组:
#include <time.h>
#include <stdlib.h>
#define ItemsCount 10
int main()
{
srand(time(NULL));
int i,j,flag,array[ItemsCount],array2d[ItemsCount/2][ItemsCount/2];
// Create the stack
for(i=0;i<ItemsCount;i++)
{
flag = 0;
do
{
array[i] = rand();
for(j=0;j<i;j++)
if(array[i]==array[j])
flag = 1;
}
while(flag)
}
// assign them to 2d array
for(i=0;i<ItemsCount/2;i++)
for(j=0;j<ItemsCount/2;j++)
array2d[i][j]=array[i+j];
return 0;
}
然后foreach元素从数组中选取另一个随机项并交换它们。
此方法不是随机的,但它可以工作。它取决于您的需要。提供的解决方案为阵列中的每个单元生成一个唯一的随机数
每个单元格将从移动范围中获得一个随机数。
一旦数组具有唯一的随机数,则可以进一步洗牌
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NR_OF_ROWS 12
#define NR_OF_COLS 7
#define RANGE 10
int get_random(int M, int N)
{
int r = M + rand() / (RAND_MAX / (N - M) + 1);
return r;
}
void shuffle(int numberOfShuffles, int table[][NR_OF_COLS] )
{
int row1,row2,col1,col2,temp1,temp2;
for (int i=0; i< numberOfShuffles; i++)
{
row1 = get_random(0, NR_OF_ROWS);
col1 = get_random(0, NR_OF_COLS);
row2 = get_random(0, NR_OF_ROWS);
col2 = get_random(0, NR_OF_COLS);
temp1 = table[row1][col1];
temp2 = table[row2][col2];
table[row1][col1] = temp2;
table[row2][col2] = temp1;
}
}
void print_table( int table[][NR_OF_COLS] )
{
printf("\n");
for(int rows = 0; rows < NR_OF_ROWS ; rows++) {
for (int columns = 0; columns < NR_OF_COLS; columns++){
printf( "<pf=%4d> ",table[rows][columns]);
}
printf("\n");
}
}
int main(int argc, char **argv)
{
int playfields [NR_OF_ROWS][NR_OF_COLS];
int rows, columns;
int number;
int lRange,hRange;
int n=0;
int numberOfShuffles = NR_OF_ROWS*NR_OF_COLS;
srand (time (NULL)); // seed generator
for(rows = 0; rows < NR_OF_ROWS ; rows++) {
for (columns = 0; columns < NR_OF_COLS; columns++) {
lRange = n*RANGE+1;
hRange = n*RANGE + RANGE;
number = get_random(lRange, hRange); // generate a unique number which will belong to <lRange, lRange> range
playfields[rows][columns] = number;
printf( "l=%4d h=%4d <pf=%4d> ", lRange, hRange, playfields[rows][columns]);
n++;
}
printf("\n");
}
//Now your table has unique numbers you can shuffle them if you wish:
shuffle(numberOfShuffles, playfields);
print_table(playfields);
return 0;
}
#包括
#包括
#包括
#定义第12行的NR_
#定义第7列的编号
#定义范围10
int get_random(int M,int N)
{
int r=M+rand()/(rand_MAX/(N-M)+1);
返回r;
}
无效洗牌(int numberOfShuffles,int table[][NR\u OF\u COLS])
{
int row1,row2,col1,col2,temp1,temp2;
for(int i=0;i
输出:
l= 1 h= 10 <pf= 4> l= 11 h= 20 <pf= 13> l= 21 h= 30 <pf= 22> l= 31 h= 40 <pf= 33> l= 41 h= 50 <pf= 41> l= 51 h= 60 <pf= 52> l= 61 h= 70 <pf= 68>
l= 71 h= 80 <pf= 78> l= 81 h= 90 <pf= 86> l= 91 h= 100 <pf= 91> l= 101 h= 110 <pf= 106> l= 111 h= 120 <pf= 116> l= 121 h= 130 <pf= 123> l= 131 h= 140 <pf= 132>
l= 141 h= 150 <pf= 148> l= 151 h= 160 <pf= 156> l= 161 h= 170 <pf= 167> l= 171 h= 180 <pf= 171> l= 181 h= 190 <pf= 187> l= 191 h= 200 <pf= 194> l= 201 h= 210 <pf= 203>
l= 211 h= 220 <pf= 219> l= 221 h= 230 <pf= 225> l= 231 h= 240 <pf= 232> l= 241 h= 250 <pf= 248> l= 251 h= 260 <pf= 256> l= 261 h= 270 <pf= 262> l= 271 h= 280 <pf= 273>
l= 281 h= 290 <pf= 287> l= 291 h= 300 <pf= 295> l= 301 h= 310 <pf= 304> l= 311 h= 320 <pf= 312> l= 321 h= 330 <pf= 328> l= 331 h= 340 <pf= 335> l= 341 h= 350 <pf= 345>
l= 351 h= 360 <pf= 358> l= 361 h= 370 <pf= 367> l= 371 h= 380 <pf= 373> l= 381 h= 390 <pf= 386> l= 391 h= 400 <pf= 393> l= 401 h= 410 <pf= 403> l= 411 h= 420 <pf= 413>
l= 421 h= 430 <pf= 429> l= 431 h= 440 <pf= 436> l= 441 h= 450 <pf= 444> l= 451 h= 460 <pf= 458> l= 461 h= 470 <pf= 462> l= 471 h= 480 <pf= 472> l= 481 h= 490 <pf= 488>
l= 491 h= 500 <pf= 499> l= 501 h= 510 <pf= 506> l= 511 h= 520 <pf= 512> l= 521 h= 530 <pf= 528> l= 531 h= 540 <pf= 531> l= 541 h= 550 <pf= 544> l= 551 h= 560 <pf= 557>
l= 561 h= 570 <pf= 566> l= 571 h= 580 <pf= 575> l= 581 h= 590 <pf= 581> l= 591 h= 600 <pf= 594> l= 601 h= 610 <pf= 601> l= 611 h= 620 <pf= 614> l= 621 h= 630 <pf= 625>
l= 631 h= 640 <pf= 639> l= 641 h= 650 <pf= 648> l= 651 h= 660 <pf= 651> l= 661 h= 670 <pf= 667> l= 671 h= 680 <pf= 675> l= 681 h= 690 <pf= 683> l= 691 h= 700 <pf= 694>
l= 701 h= 710 <pf= 708> l= 711 h= 720 <pf= 715> l= 721 h= 730 <pf= 727> l= 731 h= 740 <pf= 738> l= 741 h= 750 <pf= 742> l= 751 h= 760 <pf= 752> l= 761 h= 770 <pf= 766>
l= 771 h= 780 <pf= 774> l= 781 h= 790 <pf= 784> l= 791 h= 800 <pf= 795> l= 801 h= 810 <pf= 803> l= 811 h= 820 <pf= 819> l= 821 h= 830 <pf= 826> l= 831 h= 840 <pf= 832>
<pf= 287> <pf= 256> <pf= 106> <pf= 738> <pf= 22> <pf= 648> <pf= 819>
<pf= 33> <pf= 295> <pf= 91> <pf= 358> <pf= 203> <pf= 774> <pf= 132>
<pf= 403> <pf= 594> <pf= 667> <pf= 499> <pf= 156> <pf= 13> <pf= 194>
<pf= 614> <pf= 694> <pf= 826> <pf= 557> <pf= 708> <pf= 367> <pf= 273>
<pf= 742> <pf= 225> <pf= 506> <pf= 312> <pf= 328> <pf= 335> <pf= 345>
<pf= 123> <pf= 373> <pf= 528> <pf= 248> <pf= 393> <pf= 472> <pf= 187>
<pf= 386> <pf= 262> <pf= 444> <pf= 458> <pf= 167> <pf= 625> <pf= 752>
<pf= 512> <pf= 601> <pf= 4> <pf= 41> <pf= 531> <pf= 727> <pf= 651>
<pf= 566> <pf= 86> <pf= 683> <pf= 68> <pf= 832> <pf= 488> <pf= 171>
<pf= 116> <pf= 52> <pf= 429> <pf= 544> <pf= 675> <pf= 148> <pf= 639>
<pf= 436> <pf= 715> <pf= 575> <pf= 219> <pf= 413> <pf= 581> <pf= 766>
<pf= 78> <pf= 784> <pf= 795> <pf= 803> <pf= 462> <pf= 232> <pf= 304>
l=1H=10L=11H=20L=21H=30L=31H=40L=41H=50L=51H=60L=61H=70
l=71 h=80 l=81 h=90 l=91 h=100 l=101 h=110 l=111 h=120 l=121 h=130 l=131 h=140
l=141 h=150 l=151 h=160 l=161 h=170 l=171 h=180 l=181 h=190 l=191 h=200 l=201 h=210
l=211 h=220 l=221 h=230 l=231 h=240 l=241 h=250 l=251 h=260 l=261 h=270 l=271 h=280
l=281 h=290 l=291 h=300 l=301 h=310 l=311 h=320 l=321 h=330 l=331 h=340 l=341 h=350
l=351 h=360 l=361 h=370 l=371 h=380 l=381 h=390 l=391 h=400 l=401 h=410 l=411 h=420
l=421H=430 l=431H=440 l=441H=450 l=451H=460 l=461H=470 l=471H=480 l=481H=490
l=491 h=500 l=501 h=510 l=511 h=520 l=521 h=530 l=531 h=540 l=541 h=550 l=551 h=560
l=561 h=570 l=571 h=580 l=581 h=590 l=591 h=600 l=601 h=610 l=611 h=620 l=621 h=630
l=631H=640 l=641H=650 l=651H=660 l=661H=670L=671H=680L=681H=690L=691H=700
l=701 h=710 l=711 h=720 l=721 h=730 l=731 h=740 l=741 h=750 l=751 h=760 l=761 h=770
l=771 h=780 l=781 h=790 l=791 h=800 l=801 h=810 l=811 h=820 l=821 h=830 l=831 h=840
l= 1 h= 10 <pf= 4> l= 11 h= 20 <pf= 13> l= 21 h= 30 <pf= 22> l= 31 h= 40 <pf= 33> l= 41 h= 50 <pf= 41> l= 51 h= 60 <pf= 52> l= 61 h= 70 <pf= 68>
l= 71 h= 80 <pf= 78> l= 81 h= 90 <pf= 86> l= 91 h= 100 <pf= 91> l= 101 h= 110 <pf= 106> l= 111 h= 120 <pf= 116> l= 121 h= 130 <pf= 123> l= 131 h= 140 <pf= 132>
l= 141 h= 150 <pf= 148> l= 151 h= 160 <pf= 156> l= 161 h= 170 <pf= 167> l= 171 h= 180 <pf= 171> l= 181 h= 190 <pf= 187> l= 191 h= 200 <pf= 194> l= 201 h= 210 <pf= 203>
l= 211 h= 220 <pf= 219> l= 221 h= 230 <pf= 225> l= 231 h= 240 <pf= 232> l= 241 h= 250 <pf= 248> l= 251 h= 260 <pf= 256> l= 261 h= 270 <pf= 262> l= 271 h= 280 <pf= 273>
l= 281 h= 290 <pf= 287> l= 291 h= 300 <pf= 295> l= 301 h= 310 <pf= 304> l= 311 h= 320 <pf= 312> l= 321 h= 330 <pf= 328> l= 331 h= 340 <pf= 335> l= 341 h= 350 <pf= 345>
l= 351 h= 360 <pf= 358> l= 361 h= 370 <pf= 367> l= 371 h= 380 <pf= 373> l= 381 h= 390 <pf= 386> l= 391 h= 400 <pf= 393> l= 401 h= 410 <pf= 403> l= 411 h= 420 <pf= 413>
l= 421 h= 430 <pf= 429> l= 431 h= 440 <pf= 436> l= 441 h= 450 <pf= 444> l= 451 h= 460 <pf= 458> l= 461 h= 470 <pf= 462> l= 471 h= 480 <pf= 472> l= 481 h= 490 <pf= 488>
l= 491 h= 500 <pf= 499> l= 501 h= 510 <pf= 506> l= 511 h= 520 <pf= 512> l= 521 h= 530 <pf= 528> l= 531 h= 540 <pf= 531> l= 541 h= 550 <pf= 544> l= 551 h= 560 <pf= 557>
l= 561 h= 570 <pf= 566> l= 571 h= 580 <pf= 575> l= 581 h= 590 <pf= 581> l= 591 h= 600 <pf= 594> l= 601 h= 610 <pf= 601> l= 611 h= 620 <pf= 614> l= 621 h= 630 <pf= 625>
l= 631 h= 640 <pf= 639> l= 641 h= 650 <pf= 648> l= 651 h= 660 <pf= 651> l= 661 h= 670 <pf= 667> l= 671 h= 680 <pf= 675> l= 681 h= 690 <pf= 683> l= 691 h= 700 <pf= 694>
l= 701 h= 710 <pf= 708> l= 711 h= 720 <pf= 715> l= 721 h= 730 <pf= 727> l= 731 h= 740 <pf= 738> l= 741 h= 750 <pf= 742> l= 751 h= 760 <pf= 752> l= 761 h= 770 <pf= 766>
l= 771 h= 780 <pf= 774> l= 781 h= 790 <pf= 784> l= 791 h= 800 <pf= 795> l= 801 h= 810 <pf= 803> l= 811 h= 820 <pf= 819> l= 821 h= 830 <pf= 826> l= 831 h= 840 <pf= 832>
<pf= 287> <pf= 256> <pf= 106> <pf= 738> <pf= 22> <pf= 648> <pf= 819>
<pf= 33> <pf= 295> <pf= 91> <pf= 358> <pf= 203> <pf= 774> <pf= 132>
<pf= 403> <pf= 594> <pf= 667> <pf= 499> <pf= 156> <pf= 13> <pf= 194>
<pf= 614> <pf= 694> <pf= 826> <pf= 557> <pf= 708> <pf= 367> <pf= 273>
<pf= 742> <pf= 225> <pf= 506> <pf= 312> <pf= 328> <pf= 335> <pf= 345>
<pf= 123> <pf= 373> <pf= 528> <pf= 248> <pf= 393> <pf= 472> <pf= 187>
<pf= 386> <pf= 262> <pf= 444> <pf= 458> <pf= 167> <pf= 625> <pf= 752>
<pf= 512> <pf= 601> <pf= 4> <pf= 41> <pf= 531> <pf= 727> <pf= 651>
<pf= 566> <pf= 86> <pf= 683> <pf= 68> <pf= 832> <pf= 488> <pf= 171>
<pf= 116> <pf= 52> <pf= 429> <pf= 544> <pf= 675> <pf= 148> <pf= 639>
<pf= 436> <pf= 715> <pf= 575> <pf= 219> <pf= 413> <pf= 581> <pf= 766>
<pf= 78> <pf= 784> <pf= 795> <pf= 803> <pf= 462> <pf= 232> <pf= 304>