Thomas Kramer

IT-COW | Dezember 2011

Eclipse/Java: Zufallszahlenberechnungen

By Administrator at Dezember 13, 2011 18:11
Filed Under: Programmierung allgemein, Java

Wegen des Casts in der Zufallszahlenberechnungsroutine meines randomisierten Rabin-Karp-Algorithmus wollte ich einmal die Geschwindigkeit verschiedener Varienten austesten.

 

Nachfolgend die Ergebnisse für 100 Millionen Zufallszahlen von 0 bis 10000:

 

Variante 1 mit Math.random() mit int-Cast:

10465 ms Zeit benötigt für Zufallszahlenerzeugung.

 

Variante 2 mit Random.nextInt(Obergrenze - 1):

8737 ms Zeit benötigt für Zufallszahlenerzeugung.

 

Da aber nicht viele q-Wechsel stattfinden ist das praktisch irrelevant.

 

import java.io.File;
import java.io.IOException;
import java.util.Random;


public class zufallszahlen {

  /*-----------------------------------------------------------------------------
   *  Zufallszahlen erzeugen mit Unter- und Obergrenze
   *-----------------------------------------------------------------------------*/

  public static int myRandomWithHigh(int low, int high)
  { 
    high++; 
    return (int) (Math.random() * (high - low) + low); 
  } 
   
  public static void main(String[] args)
  {
    /* Variante 1 für Zufallszahlenerzeugung */
    long completeTimeBefore = System.currentTimeMillis();   
    for (int i=1;i<=100000000;i++)
    {
       myRandomWithHigh(0,10000);
    }   
    long completeTimeAfter = System.currentTimeMillis();     
    long completeTimeDiff   = completeTimeAfter - completeTimeBefore;       
    System.out.println(completeTimeDiff + " ms Zeit benötigt für Zufallszahlenerzeugung.\n");              
       
    /* Variante 2 für Zufallszahlenerzeugung */
    Random test = new Random();   
    completeTimeBefore = System.currentTimeMillis();   
    for (int i=1;i<=100000000;i++)
    {
       test.nextInt(10001);
    }   
    completeTimeAfter = System.currentTimeMillis();     
    completeTimeDiff   = completeTimeAfter - completeTimeBefore;       
    System.out.println(completeTimeDiff + " ms Zeit benötigt für Zufallszahlenerzeugung.\n");   
  }   
}

 

Tag-Wolke

Monats-Liste