Just nu i M3-nätverket
Gå till innehåll

Hjälp med utveckling av befintlig kod


carl111

Rekommendera Poster

Hej!

 

Behöver hjälp med följande kod, det är en slumpgenerator som genererar 7 st siffror mellan 1 - 35 och man kan i koden välja mellan vilka totalsummor man vill ha, tex 110 - 130, problemet nu är att den bara genererar 1 "sträng" åt gången varje gång man kör koden, jag vill att den ska generera ALLA kombinationer som finns i en enda lång lista, tex:

26 + 20 + 12 + 30 + 5 + 16 + 17 = 126

2 + 4 + 9 + 18 + 29 + 28 + 33 = 123

30 + 4 + 23 + 21 + 26 + 2 + 11 = 117

17 + 9 + 5 + 29 + 31 + 1 + 23 = 115

Osv...

 

Hoppas på att någon kan hjälpa mig med kompletterande kod och vart jag ska lägga in den i befintlig kod. (jag har även bifogat en zip:ad mapp med kod och allt, den heter projektet.zip)

 

 

Koden:

 

package tal.generator;

import java.util.Random;

public class Generator {
       private int[] talArray;
       public int[] getTalArray() {
               return talArray;
       }
       public Generator() {
               talArray = new int[7];
       }
       public int getSum() {
               return checkSum(talArray.length - 1);
       }
       public void generate(int minTal, int maxTal) {
               Random rnd = new Random(System.currentTimeMillis());
               int sum=0, value = 0;
               for(int i=0; i < talArray.length; i++) {
                       value = maxTal - sum;
                       if(value <= 0) {
                               i=-1;
                               continue;
                       }
                       do {
                               talArray[i] = rnd.nextInt(34) + 1;
                       }while(checkEquals());
                       sum = checkSum(i);
                       if(sum > maxTal) {
                               i=-1;
                               continue;
                       }
                       else if( i == (talArray.length - 1) && sum < minTal) {
                               i = -1;
                               continue;
                       }
               }
       }
       private boolean checkEquals() {
               boolean isTrue = false;
               for(int i=0; i < talArray.length; i++) {
                       for(int j=0; j < i; j++) {
                               if(talArray[i] == talArray[j] && talArray[i] != 0 && i != j) {
                                       isTrue = true;
                                       break;
                               }
                       }
               }
               return isTrue;
       }
       private int checkSum(int value) {
               int sum=0;
               for(int i=0; i <= value; i++) {
                       sum += talArray[i];
               }
               return sum;
       }
}

 

 

Kör den genom detta:

 

package exekvera.mig;

import tal.generator.Generator;

public class Shooter {
public static void main(String[] args) {
               Generator gen = new Generator();
               gen.generate(100, 150);
               int[] myArray = gen.getTalArray();
               for(int i=0; i < myArray.length; i++) {
                       System.out.print(myArray[i]);
                       if(i != (myArray.length - 1)) {
                               System.out.print(" + ");
                       }
               }
               System.out.print(" = " + gen.getSum());
       }
}

 

mvh Henrik

projektet.zip

Länk till kommentar
Dela på andra webbplatser

Då får nog koden skrivas om helt för då handlar det ju inte längre om några slumptal utan om en regelmässig genomgång av möjliga kombinationer.

Länk till kommentar
Dela på andra webbplatser

Hej!

 

Ok... är ny på Java, kan du tipsa om var man kan hitta sådan kod eller hjälp med att få ihop en?

 

/Tack på förhand:)

Länk till kommentar
Dela på andra webbplatser

Tyvärr, det kan jag inte.

Är du medveten om hur extremt lång lista du kommer att få? Nu var det ju väldigt länge sedan jag läste matematik men jag tror att det finns tusentals sätt bara att få summan 126.

Länk till kommentar
Dela på andra webbplatser

Hej!

 

Ok, jag får nog söka på andra forum, verkar vara svårt här, har läst andras trådar oxå, inte bara på "java forumet" folk som behöver hjälp och det är många ggr motvilligt om alls de får hjälp... va det nu kan bero på... tackar för nån typ av svar ändå:)

 

Jo jag är fullt medveten om att det kan bli en väldigt lång lista men det spelar ingen roll, det viktiga är att få det att fungera och få ut korrekt resultat.

 

/mvh Henrik

Länk till kommentar
Dela på andra webbplatser

Det är nog så att för tillfället är det inte många Java-programmerare som kommer förbi Eforum, tyvärr, och de som kommer förbi har väl inte tid att skriva hela program. Just detta problem kräver en hel del kunskaper om kombinatorik och algoritmer för det också.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...