Thread Algo für eine Prozentuale Warscheinlichkeit (11 answers)
Opened by SirLant at 2003-09-06 19:31

Ishka
 2003-09-06 20:55
#17812 #17812
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Mir ist noch ne bessere Idee gekommen, schreib ich mal mit Pseudocode auf:
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
@elemente=Liste aller Elemente, ergänzt mit 0en auf 2^n Elemente;
$gesammtzahl=Aufsummierte wahrscheinlichkeiten;

{
my $schrankenbilden=0;
for(@elemente)
{
$schrankenbilden+=$_->[0];$_->[2]=$schrankenbilden
}
}

### Element auswählen

my $sprungvar=@elemente/2-1;
my $schritt=@elemente/4;
my $ziel=rand $gesammtzahl;
while($schritt>1){
if($elemente[$sprungvar]->[2]>$ziel)
{
$sprungvar-=$schritt;
}else{
$sprungvar+=$schritt;
}
$schritt/=2;
}

Das dürfte sich sogar schon ab zwei oder drei zufälligen auswahlen rentieren - Umso mehr, je größer der array ist.

Minimal kann man noch optimieren, aber da bin ich jetzt zu faul zu ;)

ps:
Hundeblick bringt wenig, mag keine Hunde ;)\n\n

<!--EDIT|Ishka|1062867381-->
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}

View full thread Algo für eine Prozentuale Warscheinlichkeit