11. september 2005 - 09:57
Der er
6 kommentarer og 1 løsning
Generere en random rækkefølge af en liste af tal
Jeg har defineret et 2d array: arr[4][2] og bliver initialiseret til { {0,0}, {1,0}, {2,0}, {0,1} } Tallene står i den "numerisk" rækkefølge som jeg defineret det. Mit problem er så at jeg gerne vil have en TILFÆLDIG rækkefølge af de inderste array fx { {1,0}, {2,0}, {1,0}, {0,1} } men hvordan kan man opnå dette?
Annonceindlæg fra Computerworld
Gefion skaber fremtidens AI
Supercomputeren Gefion er Danmarks nye AI-kraftværk og skal sikre, at både forskning og virksomheder kan være med i den teknologiske front.
14. august 2025
11. september 2005 - 10:07
#1
mener du yderste array altså at de 4 par skal shuffles tilfældigt omkring ?
11. september 2005 - 10:17
#2
det kan gøres som: #include <stdio.h> #include <stdlib.h> #include <time.h> int a[4][2] = { {0,0}, {1,0}, {2,0}, {0,1} }; int main() { int i,j,b[4],tmp; /* print */ for(i=0;i<4;i++) printf("(%d,%d)",a[i][0],a[i][1]); printf("\n"); srand(time(NULL)); /* construct array with random numbers */ for(i=0;i<4;i++) b[i] = rand(); /* sort original array after random array */ for(i=0;i<3;i++) for(j=(i+1);j<4;j++) if(b[i]>b[j]) { tmp = b[i]; b[i] = b[j]; b[j] = tmp; tmp = a[i][0]; a[i][0] = a[j][0]; a[j][0] = tmp; tmp = a[i][1]; a[i][1] = a[j][1]; a[j][1] = tmp; } /* print */ for(i=0;i<4;i++) printf("(%d,%d)",a[i][0],a[i][1]); printf("\n"); return 0; }
11. september 2005 - 10:17
#3
ren C - kan laves lidt kønnere i C++
11. september 2005 - 10:17
#4
ja, det er de inderste arrays der skal placeres tilfældigt i det yderste
11. september 2005 - 10:31
#5
med C++ swap: #include <iostream> #include <algorithm> #include <cstdlib> #include <ctime> using namespace std; int a[4][2] = { {0,0}, {1,0}, {2,0}, {0,1} }; int main() { int b[4]; /* print */ for(int i=0;i<4;i++) cout << "(" << a[i][0] << "," << a[i][1] << ")"; cout << endl; /* construct array with random numbers */ srand(time(NULL)); for(int i=0;i<4;i++) b[i] = rand(); /* sort original array after random array */ for(int i=0;i<3;i++) for(int j=(i+1);j<4;j++) if(b[i]>b[j]) { swap(b[i],b[j]); swap(a[i][0],a[j][0]); swap(a[i][1],a[j][1]); } /* print */ for(int i=0;i<4;i++) cout << "(" << a[i][0] << "," << a[i][1] << ")"; cout << endl; return 0; }
11. september 2005 - 11:11
#6
Tak for hjælpen. Skriver du lige et svar
11. september 2005 - 11:19
#7
kommer her
Kurser inden for grundlæggende programmering