Forum: Slumpa aldrig samma tal.

Forum huvudsida -> Programmering -> Slumpa aldrig samma tal.

Sidor: 1

Till botten

Te_wargen 15:35 - 1:a December 2006 | Post #1
Medlem
Inlägg: 1


Skicka PM
Hej!
Jag undrar hur jag ska göra om man vill tex slumpa 7 olika tal och inte få samma nummer en ända gång.
som 1, 32, 22, 19, 13, 6, 14
och inte 20 , 13, 20 , 19 ,24, 15 ,23

Tack!

-------------------------
Ingen signatur!



Independence 16:17 - 1:a December 2006 | Post #2
Administratör
Inlägg: 1800


Skicka PM
Jag antar att du sparar talen i en array?
Då kan du ju göra en loop som går igenom alla talen i arrayen och kollar om värdet du slupat fram redan i arrayen, finns det redan så får du slupa ett nytt värde.

-------------------------

Vi är riddarna som säger fiskbulle!





Kanye 20:12 - 11:a December 2006 | Post #3
Medlem
Inlägg: 130


Skicka PM
Om du använder Rand-funktionen borde det ju gå? Fast där kan det dyka upp fel också för jag brukar få samma tal, om och om igen. Kanske för att värdet sparas i samma variabel?

-------------------------
Motiverar?



madah 21:14 - 12:a December 2006 | Post #4
Medlem
Inlägg: 28


Skicka PM
Ett sätt är att skapa en array som rymmer 100 element, tilldela varje ett nummer i ordningsföljd och till sist byta plats på varenda element slumpmässigt. Precis som att blanda en kortlek alltså.

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4.  
  5. int main()
  6. {
  7. int i;
  8. int tal[100];
  9.  
  10. srand(time(0));
  11. // först tilldela värden i ordning
  12. for(i=0; i<100; i++)
  13. {
  14. tal[i] = i;
  15. }
  16.  
  17. // slumpvis ordning
  18. for(i=0; i<100; i++)
  19. {
  20. // ta en slumpmässig position
  21. int nypos = rand()%100;
  22. // byt plats
  23. int temp = tal[i];
  24. tal[i] = tal[nypos];
  25. tal[nypos] = temp;
  26. }
  27. // skriv ut
  28. for(i=0; i<100; i++)
  29. {
  30. printf("%d\n", tal[i]);
  31. }
  32.  
  33. return 0;
  34. }





Herr_Robert 17:50 - 14:e December 2006 | Post #5
Medlem
Inlägg: 1


Skicka PM
Hej tänkte detta var en aning relaterat iaf, ska nämligen göra en likande uppgift men arrayen ska sorteras i storleksording och man får inte anänvda något direkt "sort-array kommando", skulle uppskatta om någon skulle kunna berätta för mig hur man skulle kunna göra detta.

-------------------------
Ingen signatur!

Senast redigerad 19:09 - 14:e December 2006


ozamosi 18:41 - 14:e December 2006 | Post #6
Administratör
Inlägg: 1129


Skicka PM
Sorteringsalgoritmer är en hel vetenskap, och har inget, eller mycket lite, att göra med att slumpa tal.

Jag föreslår att du letar efter t ex bubblesort eller quicksort, alternativt läser i din lärobok, där någon sorteringsalgoritm troligen beskrivs.

-------------------------
Ljusblå



Froboo 13:23 - 12:a Januari 2007 | Post #7
Medlem
Inlägg: 1


Skicka PM
Må vara lite sent ute men...
#include <algorithm>
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
cout << "\n\nType in the number of objects: ";
int maxNumber;
cin >> maxNumber;
cout << endl;
int numbers[maxNumber];            
for (int i = 0; i < maxNumber; i++)    
numbers[i] = i + 1;
random_shuffle(numbers, numbers+maxNumber);
for (int i = 0; i < maxNumber; i++)    
cout << "\n#" << i + 1 << "\t" << numbers[i];

return 0;
}


-------------------------
Ingen signatur!



Kanye 13:41 - 12:a Januari 2007 | Post #8
Medlem
Inlägg: 130


Skicka PM
Om du väljer små tal (1-4) så kommer det ej slumpas, utan att skrivas som en vektor:

VEKTOR1[1] = 1;
VEKTOR2[2] = 2;
VEKTOR3[3] = 3;
VEKTOR4[4] = 4;


-------------------------
Motiverar?



Sidor: 1

Forum huvudsida -> Programmering -> Slumpa aldrig samma tal.
Atom feed

Du får inte posta i den här tråden | Till toppen