[linux-l] [OT] Gewichtete Wahrscheinlichkeit, Random

Steffen Dettmer steffen at dett.de
So Feb 18 16:35:16 CET 2007


* Olaf Radicke wrote on Sat, Feb 17, 2007 at 19:50 +0100:
> Am Samstag, 17. Februar 2007 18:43 schrieb Olaf Radicke:
> > Wenn ich mich nicht vertan habe, wird das Array 400 Elemente lang.
> 
> ...Mist der Integer ist übergelaufen. Es sind tatsächlich 2.097.151. 
> Verstehe ich nicht. Laut meinen Buch sind bei c# int 2.147.483.647 
> lang.
> 
> Wie auch immer. Der Algorithmus sieht jetzt so aus:
> 
>         int[] regengewichtung = new int[2097151];
>         int faktor = 1;
>         ulong gesamt = 0;
>         for(int i = 100; i>=0; i=i-5)
>         {
>             for(int i2 = 0; i2<faktor; i2++)
>             {
>                 regengewichtung[gesamt] = i;
>                 gesamt = gesamt+1;
>             }
>             faktor = faktor*2;
>         }
>         int niederschlag = regengewichtung[r.Next(0,2097151)];
>         Console.WriteLine("### niederschlag: " + niederschlag);

Was ist denn das?

> Ich hätte auch ein ArrayList nehmen können (wegen der Sicherheit), aber 
> ich hatte angst es wird zu langsam und diese Lösung ist schnell.

Du behauptest, ein Array mit 2 Millionen Elementen zu füllen und dann
nur ein einziges zufällig auszuwählen um einen von nur 20 möglichen
Werten zu lesen und auszugeben, sei schnell?!

  int niederschlag = 100-5 * ( ln( r.Next(0,1048576) ) / ln(2) );
  Console.WriteLine("### niederschlag: " + niederschlag);

ist langsamer?

oki,

Steffen

-- 
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.





Mehr Informationen über die Mailingliste linux-l