Thread N Zahlen ermitteln mit Gesamtwert 100 (44 answers)
Opened by RPerl at 2008-05-10 23:36

KurtZ
 2008-05-11 06:34
#109557 #109557
User since
2007-12-13
411 articles
BenutzerIn
[default_avatar]
Dubu+2008-05-11 02:13:46--
Wenn man also nur positive ganze Zahlen (|N+) zulässt, wird's ein klein wenig komplizierter:


Richtig, bei meiner Methode wirds nur ein klein wenig komplizierter, man darf halt nicht zwo gleiche Zwischensummen zulassen, sondern muss dann eben nochmal würfeln.

Was ihr bei euren Rest-Methoden alle überseht ist, dass egal wie lang die Sequenzen sind, immer mehr als die Hälfte aller Sequenzen ein Intervall enthält das größer als die Hälfte ist.
Dann nochmal die Hälfte mit ner Sequenz größer als ein Viertel, usw.

Ich kann mir nicht vorstellen dass man sowas will, dass ist ziemlich langweilig und unrepresentativ und außerdem hat man dann bei längeren Sequenzen oft lauter Nullen (oder Einsen je nach dem).

Zur Veranschaulichung den Algo von Gast für 5er-Sequenzen genommen und die ersten 20 Ergebnisse ausgegeben:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
94 5 0 0 1
64 6 17 1 12
36 21 1 19 23
29 38 17 4 12
83 6 1 1 9
71 25 0 3 1
95 1 3 0 1
84 15 0 0 1
91 5 3 0 1
29 25 43 2 1
62 9 8 1 20
93 0 2 3 2
46 11 1 12 30
18 37 9 31 5
68 9 13 8 2
15 29 25 15 16
66 8 25 0 1
96 3 0 0 1
46 47 4 0 3
75 5 10 4 6


bitte vergleichen mit
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
0	8	15	25	52
7 13 7 4 69
11 16 21 13 39
15 8 23 5 49
41 14 38 6 1
22 19 37 13 9
4 75 5 2 14
2 10 8 5 75
1 24 9 52 14
17 24 28 17 14
7 68 15 3 7
19 15 30 20 16
4 0 7 78 11
16 25 5 52 2
12 40 14 2 32
23 4 17 27 29
16 1 30 46 7
3 29 36 25 7
22 34 21 2 21
12 39 42 3 4


ermittelt mit
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use strict;
use warnings;

($\,$,)=("\n","\t");
my ( $min, $max, $anz ) =
   (    0,  100,    5 );

my $gt0=0; # Flag: groesser als 0

for (1..20) { # 20 Durchlufe
        my @zws=($min);
        my @seq;
        for (1..$anz-1) {
                my $zws=int(rand($max));
                redo if $gt0 and grep {/^$zws$/} @zws; # Null ausschließen [edit]regex mit ^...$ verbessert[/edit] 
                push @zws, $zws;
        }
        push @zws, $max; # letzte Zw-Summe == Gesamtsumme
        
        @zws=sort {$a <=> $b}  @zws;

        for my $i (1 .. $#zws) {
                push @seq, $zws[$i]-$zws[$i-1];
        }
        print @seq;
}
TMTOWTDYOG (there's more than one way to dig your own grave)

View full thread N Zahlen ermitteln mit Gesamtwert 100