Schrift
[thread]11787[/thread]

N Zahlen ermitteln mit Gesamtwert 100 (Seite 4)

Leser: 12


<< |< 1 2 3 4 5 >| >> 45 Einträge, 5 Seiten
Gast Gast
 2008-05-11 16:12
#109574 #109574
Mal eine Dumme Frage. Warum kommt bei topegs Variante überhaupt eine zufällige Verteilung raus?
Er holt sich fast hundert Zufallswerte. Ich würde da schon eine statistische Verteilung der Werte erwarten, also etwas um 30 30 30, mit kleinen Unterschieden.
KurtZ
 2008-05-11 16:14
#109575 #109575
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
topeg+2008-05-11 11:27:39--
Eine ganz kurze Lösung:
Code (perl): (dl )
1
2
3
4
5
6
7
my $bis=100;
my $menge=3;

my @zahlen=map{$_=1}(1..$bis);
$zahlen[int(rand($#zahlen))]+=pop(@zahlen) while(@zahlen>$menge);

print "@zahlen \n";

Leider hat sie einen Schönheitsfehler: Die '0' kommt niemals vor.


sehr kreativ! 8-) (hast als Kind gerne Sandhäufchen herumgeschüttet? ;-)

...allerdings braucht sie immer ca 100 Zufallszahlen...
TMTOWTDYOG (there's more than one way to dig your own grave)
KurtZ
 2008-05-11 16:27
#109577 #109577
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
Gast+2008-05-11 14:12:52--
Mal eine Dumme Frage. Warum kommt bei topegs Variante überhaupt eine zufällige Verteilung raus?
Er holt sich fast hundert Zufallswerte. Ich würde da schon eine statistische Verteilung der Werte erwarten, also etwas um 30 30 30, mit kleinen Unterschieden.


du hast den Algo wahrscheinlich nicht ganz verstanden:

Er fängt mit einer 100er Sequenz an mit je Wert 1 als Eintrag (Gesamtsumme also 100). Die Sequenz verkürzt er sukzessive, in dem er immer den letzten Wert auf ein zufälliges Element der Restsequenz addiert. Die Gesamtsumme bleibt bei jedem Zwischenschritt also 100.

So ne art Reise nach Jerusalem, wobei der ausgeschiedene seine Stühl(e) bei einem verbleibenden Spieler auftürmen muss.

So angenommen er nimmt zum Schluss das 4. Element und addiert es auf eines der ersten 3, warum sollte 30 30 30 rauskommen wenn (nach deiner Logik) ja vorher 25 25 25 25 drinstanden??? (und davor 20 20 20 20 20 etc. pp.)

TMTOWTDYOG (there's more than one way to dig your own grave)
KurtZ
 2008-05-11 16:58
#109579 #109579
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
topeg+2008-05-11 11:27:39--
Leider hat sie einen Schönheitsfehler: Die '0' kommt niemals vor.


Code (perl): (dl )
1
2
3
4
5
6
7
8
9
my $bis=100;
my $menge=3;
my $nullen=$menge;

for (1..100) {
        my @zahlen=( (0)x$nullen, (1)x$bis );
        $zahlen[ int( rand( $#zahlen ) ) ]+=pop(@zahlen) while(@zahlen>$menge);
        print "@zahlen \n" if grep {/^0$/} @zahlen;
}

Code: (dl )
1
2
3
4
5
32 0 68 
0 54 46
30 70 0
0 76 24
0 97 3
TMTOWTDYOG (there's more than one way to dig your own grave)
RPerl
 2008-05-11 19:46
#109584 #109584
User since
2006-11-26
384 Artikel
BenutzerIn

user image
KurtZ+2008-05-11 13:59:44--
RPerl+2008-05-11 12:04:49--
Im richtigen Leben wuerdest du das ja schliesslich auch nicht sagen.


Doch, natürlich!

Insbesondere bei Leuten die sich erst helfen lassen und danach sagen sie hätten es aber anders gemeint als sie gesagt haben.

(Zugegeben mein Fankreis ist ... kontrastiert ;-)

Kurz gesagt: ein sozialer Krueppel.

Die anderen haben alle verstanden was ich gemeint hab.
Wie auch immer.

Gruss
Rperl

-thread kann geclosed werden-
topeg
 2008-05-11 19:54
#109585 #109585
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
KurtZ+2008-05-11 14:14:22--
sehr kreativ! 8-)

Danke, Danke ( Die besten Ideen kommen einem immer auf dem Klo :-)

KurtZ+2008-05-11 14:14:22--
...allerdings braucht sie immer ca 100 Zufallszahlen...

Um genau zu sein macht die Schleife immer "$bis-$menge" Durchläufe. und generiert entsprechend viele Zufallszahlen. Deshalb dürfte meine Variante langsamer sein als alle anderen Ansätze. Dafür ist es aber kurz, sehr kurz.

An deine Ergänzung habe ich gar nicht gedacht. Damit wäre der Schönheitsfehler auch behoben. Damit werden dann genau "$menge" Durchläufe gebraucht.
KurtZ
 2008-05-11 20:13
#109586 #109586
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
RPerl+2008-05-11 17:46:17--
Kurz gesagt: ein sozialer Krueppel.


Nein! KurtZ gesagt ein ...

RPerl+2008-05-11 17:46:17--
Die anderen haben alle verstanden was ich gemeint hab.


Du, bestimmt Perl ist ja auch eine DWIM-Sprache ... starte doch mal ne Abstimmung ...

Nun gut, ich könnte jetzt noch was draufsetzen aber lassen wirs gut sein ... Wir wollen ja nicht die hiesigen Gaffer mit unserer Comedy unterhalten ohne Eintritt zu nehmen, oder? 8-)

Ich versprech dir auch nicht mehr in deine Threads einzumischen ...

Halali
Kurt
TMTOWTDYOG (there's more than one way to dig your own grave)
RPerl
 2008-05-11 20:19
#109587 #109587
User since
2006-11-26
384 Artikel
BenutzerIn

user image
topeg
Danke, Danke ( Die besten Ideen kommen einem immer auf dem Klo :-)

Danke das du extra diese Zeit fuer mich genutzt hast! :D
Schade das PBoard keine Smilies hat. btw.
KurtZ
 2008-05-11 20:21
#109588 #109588
User since
2007-12-13
411 Artikel
BenutzerIn
[default_avatar]
topeg+2008-05-11 17:54:33--
An deine Ergänzung habe ich gar nicht gedacht. Damit wäre der Schönheitsfehler auch behoben. Damit werden dann genau "$menge" Durchläufe gebraucht.


jo, perfekt ist sie aber nicht, die Null ist überrepräsentiert. Vielleicht würde eine Zufallsverteilung der Nullen über die gesamte Sequenz helfen ...

Außerdem hab ich kein Gefühl dafür, wie man die Güte deiner Ergebnisse abschätzen könnte. Mein Ansatz braucht zwar mehr Code, lässt sich aber gut theoretisch fassen (du brauchst ja fast 100 Schritte mehr)

Zudem ist der kompakte Code IMHO etwas zu magisch, ich brauchte einige Zeit um ihn zu kapieren ... wartungstechnisch also so la la...

Aber nichstdestotrotz die Idee und Algo sind knuffig und creativ! Lob!!! 8-)

NACHTRAG:
Dubu+2008-05-11 10:30:45--
@KurtZ: Deine Lösung gefällt mir. Und sie entspricht wegen der besseren Verteilung wahrscheinlich eher der Aufgabenstellung.

ich vergass: Danke! 8-)
TMTOWTDYOG (there's more than one way to dig your own grave)
pq
 2008-05-12 00:31
#109594 #109594
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
RPerl+2008-05-11 17:46:17--
-thread kann geclosed werden-

wieso sagt man heutzutage eigentlich nicht mehr "geschlossen"? und warum haben so viele
auf myspace & co. freunde geaddet statt hinzugefügt?
ich benutz auch ein paar englische wörter, die sich schlecht auf deutsch übersetzen lassen,
aber diese ge-<englisches verb>-et sind doch furchtbar, wenn die entsprechenden deutschen
wörter existieren.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< |< 1 2 3 4 5 >| >> 45 Einträge, 5 Seiten



View all threads created 2008-05-10 23:36.