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

Oliver Bandel oliver at first.in-berlin.de
Di Feb 20 22:14:56 CET 2007


On Tue, Feb 20, 2007 at 08:04:31PM +0100, Steffen Dettmer wrote:
> * Olaf Radicke wrote on Mon, Feb 19, 2007 at 00:52 +0100:
> > > 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?!
> > 
> > array vs. ArrayList: Ja. Definitiv.
> 
> ja gut, aber array vs. einmal rechnen... nicht :)
> 
> > >   int niederschlag = 100-5 * ( ln( r.Next(0,1048576) ) / ln(2) );
> > 
> > Was ist "ln()"?
> 
> irgendein Logarithmus. Wenn Du den zur Basis zwei hast, kann man das
> natürlich einfacher schreiben und muss nicht teilen. Hat man meist aber
> nicht. ln ist der natürliche zur Basis e.


Naja, je nach Programmiersprache heisst dasDing log()
und ist entweder dekadisch oder zur Basis e.

Wenn mich nicht alles täuscht, folgen nicht alle Programmiersprachen
der mathematischen Konvention und lassen log() für dekadischen (oder einen allgemeinen)
und ln()  für den Logarithmus zur Basis zwei stehen.

So findet man log() auch als Logarithmus zur Basis e,
log10() alsLogarithmus zur Basis 10, also dekadischer Log.
Finde ich schade. Man müsste konsequenterweise dann wenigstens
loge() oder logn() haben für den nat. Log.

Also ln() wird man manchmal vergebens suchen und muss stattdessen
log() nehmen.
Unter den BSD-Manpages fand ichsogar ein log2() und ein log1p().
log2()ist klar: Log. zur Basis zwei, und log1p() kannte ich vorher noch nicht:


  "The log1p() function computes the value of log(1+x) accurately even for
   very small values of x."
      (aus "man 3 log" unter OS-X)



Gruß,
  Oliver



Mehr Informationen über die Mailingliste linux-l