Avatar billede acid-head Nybegynder
11. januar 2004 - 16:29 Der er 8 kommentarer og
1 løsning

Tal i tilfældig rækkefølge..

Jeg kan ikke lige gennemskue hvordan jeg udskriver tallen mellem fx 0 og 20 i tilfældig rækkefølge.

Både C og C++ er velkommen da det mest er princippet jeg leder lidt efter..
Avatar billede soreno Praktikant
11. januar 2004 - 16:39 #1
I c++ kunne du gøre sådan:

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    vector<int> vect;

    for(int i=0;i<20;i++)
    {
        vect.push_back(i);
    }

    random_shuffle(vect.begin(), vect.end());

    for(vector<int>::const_iterator iter = vect.begin();iter != vect.end();iter++)
    {
        cout << *iter << " ";
    }

    return 0;
}
Avatar billede akany_ Nybegynder
11. januar 2004 - 16:47 #2
Du kan også bruge funktionen rand()
Eks:

#include <iostream>
#include <cstdlib>
#include <algorithm>
using namespace std;


int main()
{
    srand(time(NULL));
    int tal=rand()%21;
    cout<<"tilfaeldigt tal mellem 1 og 20: "<<tal<<endl;
    system("pause");
    return 0;
}
Avatar billede akany_ Nybegynder
11. januar 2004 - 16:49 #3
Vil bare sige at soreno's løsning er bedre, da min vil kræve at du hele tiden skal tjekke om tallet er brugt en gang.
Avatar billede acid-head Nybegynder
11. januar 2004 - 22:07 #4
Soreno: Din virker meget godt, men gider du ikke forklare hvorfor du bruger vectors.. Kan man ikke bare lave det med nogle helt almindelige int variabler eller sådan noget..? :)
Avatar billede akany_ Nybegynder
11. januar 2004 - 23:07 #5
Mener du arrays eller?
Avatar billede bertelbrander Novice
12. januar 2004 - 00:20 #6
Soreno's løsning med et array:

#include <iostream>
#include <stdio.h>

using namespace std;

static const int NumNumber = 20;

int main()
{
  int Ar[NumNumber];
  int i, j, t, n;

  for(i = 0; i < NumNumber; i++)
  {
    Ar[i] = i;
  }

  for(i = 0; i < 100; i++)
    for(j = 0; j < NumNumber; j++)
    {
      n = rand()%20;
      t = Ar[j];
      Ar[j] = Ar[n];
      Ar[n] = t;
    }

  for(i = 0; i < NumNumber; i++)
      cout << Ar[i] << " ";

  cout << endl;

  return 0;
}
Avatar billede bertelbrander Novice
12. januar 2004 - 20:06 #7
Linien:

n = rand()%20;

bør naturligvis rettes til

n = rand()%NumNumber;
Avatar billede acid-head Nybegynder
14. januar 2004 - 23:19 #8
Hej igen folk.. Jeg kunne bruge koden.. Tak.

Ingen der vil lægge et svar? :)
Avatar billede soreno Praktikant
15. januar 2004 - 06:18 #9
Et svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester