WinFuture-Forum.de: Eine Zahl X In X Zufällige Teile Teilen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 2 Seiten +
  • 1
  • 2

Eine Zahl X In X Zufällige Teile Teilen

#16 Mitglied ist offline   scy_ 

  • Gruppe: aktive Mitglieder
  • Beiträge: 120
  • Beigetreten: 02. März 10
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 04. März 2010 - 14:33

Ich glaube ich verstehh jetzt was du meinst^^

Es wurde mit keinem Wort erwähnt, das die Summe der Teile genau Y entpsrechen muss. Es wurde nur gesagt sie soll in bestimmte Teile aufgeteilt werden.

Solle dem so sein, dass die Summe genau Y sein muss, so is die letzte Zahl ohne Zweifel der Rest.

Bzgl. 100+98+1, ersetze das -X durch -(X-1) dann passt es. Zu Erklärungszwecken lass ich socleh Schönheitssachen immer weg^^

Und ohne die Komplexität extrem zu erhören, fällt mir grade keine Möglichkeit ein die einzelnen Zahlen in einen Intervall zu packen^^
Mfg scy
Eingefügtes Bild
0

Anzeige



#17 Mitglied ist offline   Mr. Floppy 

  • Gruppe: VIP Mitglieder
  • Beiträge: 4.126
  • Beigetreten: 01. Juli 08
  • Reputation: 271
  • Geschlecht:Männlich

geschrieben 04. März 2010 - 16:04

Wie wär's mit folgender Vorgehensweise? Man teilt Zahl Y in X gleiche Teile. Das muß funktionieren, weil sonst max zu klein wäre. Danach zieht man von der Hälfte der Zahlen zufällig einen Teil ab, ohne unter das Minimum zu geraten. Zu den anderen Zahlen addiert man dann diese Differenzen. Natürlich muß man sich um ungerade Zahlen etc. kümmern und nutzt unter Umständen nicht das gesamte Spektrum* zwischen min und max, aber der Algo ist dann linear und kann sogar parallel abgearbeitet werden.

*was man mit ein paar Verfeinerungen ändern kann

Beispiel:
X=4
Y=200
min=20
max=100

1. Schritt
a1 = a2 = a3 = a4 = 50

2. zufälligen Wert von der ersten Hälfte der Zahlen abziehen (z-rand >= min und z+rand <= max)

a1 = 50 - 23 = 27
a2 = 50 - 11 = 39

3. Differenzen zur 2. Hälfte der Zahlen addieren

a3 = 50 + 23 = 73
a4 = 50 + 11 = 61

Ergebnis
27 + 39 + 73 + 61 = 200 und für alle Zahlen z, min <= z <= max

Dieser Beitrag wurde von Mr. Floppy bearbeitet: 04. März 2010 - 16:18

0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0