Readers: 12
|< 1 2 3 4 5 >| | 45 entries, 5 pages |
lichtkind+2008-05-11 00:01:04--warum so kompliziert. nimm 2 zufallzahlen und als dritte zahl den rest zu 100 :)
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";
}
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 -w use strict; my ($nr1, $nr2, $nr3); my @passes; for (1..1_000_000) { #print $_ .": \n"; $nr1 = int ( rand(100) ); my $i = 0; do { $nr2 = int ( rand(100) ); $i++; } while($nr1+$nr2 > 99); $nr3 = 100-($nr1+$nr2); #print "Durchlaeufe: ". $i ."\n"; push @passes, $i; #print "$nr1 + $nr2 + $nr3 = " . ($nr1+$nr2+$nr3) ."\n"; } my $average; $average += $_ for @passes; $average /= scalar @passes; print "\nDurchschnittl. Anzahl d. Durchlaeufe: " .$average;
1
2
3
4
5
6
7
8
9
10
11
12
13
Durchschnittl. Anzahl d. Durchlaeufe: 5.164434
C:\programmierung\perl>perl 100.txt
Durchschnittl. Anzahl d. Durchlaeufe: 5.165607
C:\programmierung\perl>perl 100.txt
Durchschnittl. Anzahl d. Durchlaeufe: 5.208451
C:\programmierung\perl>perl 100.txt
Durchschnittl. Anzahl d. Durchlaeufe: 5.158104
C:\programmierung\perl>perl 100.txt
Durchschnittl. Anzahl d. Durchlaeufe: 5.194556
1 2 3 4 5 6 7 8
#!/usr/bin/perl -w use strict; my $nr1 = int ( rand(100) ); my $nr2 = int (rand (100-$nr1)); my $nr3 = 100-($nr1+$nr2); print "$nr1 + $nr2 + $nr3 = " . ($nr1+$nr2+$nr3) ."\n";
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#!/usr/bin/perl -w use strict; my $counts = 6; my @numbers; for my $i (0..$counts-2) { if ($i == 0) { $numbers[$i] = int(rand(100)); } else { my $subtotal = 0; $subtotal += $_ for @numbers; $numbers[$i] = int(rand(100-$subtotal)); } } my $amount = 0; print join('+', @numbers) .'+'; $amount += $_ for @numbers; my $last_nr = (100-$amount); print "$last_nr = "; print $amount+$last_nr;
Dubu+2008-05-11 02:13:46--Wenn man also nur positive ganze Zahlen (|N+) zulässt, wird's ein klein wenig komplizierter:
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
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
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; }
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";
Quote>Naja ... Mathe könnt ich verzeihen aber Deutsch hättest du üben sollen ; )
RPerl+2008-05-11 12:04:49--Im richtigen Leben wuerdest du das ja schliesslich auch nicht sagen.
|< 1 2 3 4 5 >| | 45 entries, 5 pages |