Box Generator / Sprache Cee Sharp
 
StartSeite | BoxGenerator/ | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern

Veränderung (letzte Änderung) (keine anderen Diffs, Normalansicht)

Verändert: 1c1,71
Beschreibe hier die neue Seite.
[[Code]
using System;

class RndBox? {

public RndBox?()
{
random = new Random();
available = false;
}

/* move to the next element of the pseudo random
sequence */

public void Next()
{
if (available)
available = false;
else
generate();
}

/* pseudo random deviate from the gaussian
distribution */

public double LastGaussian?()
{
return available ? first : second;
}

// generate two pseudo random deviates from a
// gaussian distribution

private void generate()
{
randpoint();
double p = Math.Sqrt((-2.0 * Math.Log(product)) / product);
first = p * x;
available = true;
second = p * y;
}

// a point from a uniform distribution on the area
// of the unit circle

private void randpoint()
{
do
{
x = randuniv() * 2 - 1;
y = randuniv() * 2 - 1;
product = x * x + y * y;
} while (product > 1.0);
}

private double x, y, product, first, second;
private bool available;

// internal wrapper for uniform distribution on
// unit interval

private double randuniv()
{
return random.NextDouble?();
}

private Random random;
}
]

Diese Implementation ist durch minimale Anpassung aus der Version in SpracheJava entstanden.

using System;

class RndBox {

  public RndBox()
  {
    random = new Random();
    available = false;
  }

  /* move to the next element of the pseudo random 
      sequence */

  public void Next() 
  {
    if (available)
      available = false;
    else
      generate();
  }
   
  /* pseudo random deviate from the gaussian 
      distribution */
 
  public double LastGaussian()
  {
    return available ? first : second;
  }

  // generate two pseudo random deviates from a 
  // gaussian distribution 

  private void generate()
  {
    randpoint();
    double p = Math.Sqrt((-2.0 * Math.Log(product)) / product);
    first = p * x;
    available = true;
    second = p * y;
  }

  // a point from a uniform distribution on the area 
  // of the unit circle 

  private void randpoint() 
  {
    do
    {
      x = randuniv() * 2 - 1;
      y = randuniv() * 2 - 1;
      product = x * x + y * y;
    } while (product > 1.0);
  }

  private double x, y, product, first, second;   
  private bool available;

  // internal wrapper for uniform distribution on 
  // unit interval 

  private double randuniv()
  {
    return random.NextDouble();
  }

  private Random random;
}

Diese Implementation ist durch minimale Anpassung aus der Version in SpracheJava entstanden.


StartSeite | BoxGenerator/ | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 16. Mai 2007 20:28 (diff))
Suchbegriff: gesucht wird
im Titel
im Text