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

Dubu
 2008-05-11 04:13
#109552 #109552
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Ist eigentlich die Null als Summand zugelassen?

Wenn nicht, dann muss man noch berücksichtigen, dass nach einer Zufallszahl evtl. der Rest zu klein ist, um noch die weiteren Zahlen unterzubringen. Beispiel: Wenn ich zuerst 99 würfele, ist das zwar kleiner als 100, aber ich kann keine zwei weiteren Summanden bilden, die größer als Null sind. Und beim Würfeln sollte dann auch keine Null herauskommen.

Wenn man also nur positive ganze Zahlen (|N+) zulässt, wird's ein klein wenig komplizierter:
Code: (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
#!/usr/bin/perl
use strict;
use warnings;

my $maximum = 100; # Die Summe, die am Ende herauskommen muss
my $n = int(rand 9) + 2; # Gewuenschte Anzahl der Summanden, hier mal zufaellig zwischen 2 und 10
print "$n Summanden\n";

my @summanden;
my $summe = 0; # Bisher erreichte Summe
for my $summand (0 .. $n-1) {
if ($summand < $n-1) {
# Maximum fuer $summand'tes Glied ist $maximum-$summe,
# minus Anzahl der noch uebrigen Summanden!
push @summanden, int(rand ($maximum - $summe - ($n-$summand)) + 1);
} else {
# Letztes Glied ist der Rest
push @summanden, ($maximum - $summe);
}
$summe += $summanden[-1];
}

{
$, = ' + ';
print "@summanden = $summe\n";
}

View full thread N Zahlen ermitteln mit Gesamtwert 100