eNTitanok.util
Class Veletlen

java.lang.Object
  |
  +--eNTitanok.util.Veletlen
Direct Known Subclasses:
Veletlen.Egyenletes, Veletlen.Exponencialis, Veletlen.Normalis, Veletlen.Poisson, Veletlen.Veges

public class Veletlen
extends java.lang.Object

Egy olyan (pszeudo)véletlenszám-generátor, amely determinisztikussá tehető, azaz megmondható neki, hogy a következő néhány ,,véletlenszám'' mi legyen. Ezeket a fix számokat az ún. determinizáló sorból veszi. Egyetlen generátorhoz egyetlen determinizáló sor tartozik, ami kezdetben üres.

A generált véletlenszámok 0 és N-1 közé eső int-ek, ahol N a kovetkezo() hívás paramétere.

See Also:
Random

Inner Class Summary
static interface Veletlen.CsakDetException
          Akkor váltódik ki, ha véletlenszámot kell generálni, `csakDet' igaz, továbbá `kovetkezo' üres.
static interface Veletlen.DetHatarException
          Akkor váltódik ki, ha a `kovetkezo'-ben szereplő szám nem esik a megadott határok közé.
static class Veletlen.Egyenletes
          [a,b)-n egyenletes eloszlású számokat generál.
static class Veletlen.Exponencialis
          [d,b+d)-n lambda paraméterű, exponencialis eloszlású számok egészre kerekítettjeinél $d$-vel nagyobb számokat generál.
static interface Veletlen.Generalo
          Az őt megvalósító objektumok képesek int típusú véletlenszámokat generálni.
static class Veletlen.Normalis
          [a,b)-n m várható értékű, sigma szórású, normális eloszlású számok egészre kerekítettjeinél $d$-vel nagyobb számokat generál.
static class Veletlen.Poisson
          [d,b+d)-n lambda paraméterű, Poisson-eloszlású számoknál $d$-vel nagyobb számokat generál.
static class Veletlen.Veges
          A megadott diszkrét, véges eloszlású, nemnegatív értékű számokat generál.
 
Field Summary
protected  boolean csakDet
          Pontosan akkor `true', ha a generált számokat kizárólag a determinizáló sorból szabad venni.
protected  Sor kovetkezo
          A determinizáló sor.
protected  java.util.Random random
          A használt pszeudovéletlenszám-generátor.
 
Constructor Summary
Veletlen()
          Egy új véletlenszám-generátort hoz létre, amely a Java alapértelmezés szerinti véletlenszám-generátorát használja.
Veletlen(java.util.Random random, boolean csakDet)
          Egy új véletlenszám-generátort hoz létre, amely a megadott véletlenszám-generátort használja, és a megadott számú determinizáló sort kezel.
 
Method Summary
protected  java.lang.Integer csakDetet(int a, int b)
          aasdasd-nál nagyobb-egyenlő, de b-nél kisebb véletlenszámot vesz ki `kovetkezo' elejéről.
 int egyenletes(int n)
          0 és n-1 közötti, egyenletes eloszlású, egész értékű ,,véletlenszámot'' generál (a határokat is beleértve), az értéket a megadott determinisztikus sorból véve, ha az nem üres.
 int egyenletes(int a, int b)
          a és b-1 közötti, egyenletes eloszlású, egész értékű ,,véletlenszámot'' generál (a határokat is beleértve), az értéket a megadott determinisztikus sorból véve, ha az nem üres.
 int exponencialis(double lambda)
          Csakúgy, mint kétparaméteres változata, de a felső határ Integer.MAX_VALUE.
 int exponencialis(double lambda, int felso)
          Exponenciális eloszlású (lambda paraméterrel) ,,véletlenszám'' kerekített (Math.round()), egész értékét generálja.
 java.util.Random getRandom()
           
 int getUtolso()
           
 int normalis()
          Csakúgy, mint kétraméteres változata, de standard normális eloszlás szerint generál (m=0, sigma=1).
 int normalis(double m, double sigma)
          Csakúgy, mint háromparaméteres változata, de a felső határ Integer.MAX_VALUE.
 int normalis(double m, double sigma, int also, int felso)
          Normális (Gauss-)eloszlású (m várható értékű, sigma szórású) ,,véletlenszám'' kerekített (Math.round()), egész értékét generálja.
 int poisson(double lambda)
          Csakúgy, mint kétparaméteres változata, de a felső határ Integer.MAX_VALUE.
 int poisson(double lambda, int felso)
          Poisson-eloszlású (lambda paraméterrel), egész értékű ,,véletlenszámot'' generál.
 void sorba(int ujertek)
          Új értéket fűz a determinizáló sor végéhez.
 void sorbaDelta(int ujertek)
          Új értéket fűz a determinizáló sor végéhez, de kivonja belőle az utolsó elemet.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

kovetkezo

protected Sor kovetkezo
A determinizáló sor.

csakDet

protected boolean csakDet
Pontosan akkor `true', ha a generált számokat kizárólag a determinizáló sorból szabad venni.

random

protected java.util.Random random
A használt pszeudovéletlenszám-generátor.
Constructor Detail

Veletlen

public Veletlen()
Egy új véletlenszám-generátort hoz létre, amely a Java alapértelmezés szerinti véletlenszám-generátorát használja.
See Also:
Random

Veletlen

public Veletlen(java.util.Random random,
                boolean csakDet)
Egy új véletlenszám-generátort hoz létre, amely a megadott véletlenszám-generátort használja, és a megadott számú determinizáló sort kezel.
Method Detail

sorba

public void sorba(int ujertek)
Új értéket fűz a determinizáló sor végéhez.

csakDetet

protected java.lang.Integer csakDetet(int a,
                                      int b)
aasdasd-nál nagyobb-egyenlő, de b-nél kisebb véletlenszámot vesz ki `kovetkezo' elejéről. Kiváltja a megfelelő kivételeket. `null'-t ad vissza, ha `kovetkezo' üres volt.

egyenletes

public int egyenletes(int n)
0 és n-1 közötti, egyenletes eloszlású, egész értékű ,,véletlenszámot'' generál (a határokat is beleértve), az értéket a megadott determinisztikus sorból véve, ha az nem üres.
Parameters:
n - ennél határozottan kisebb lesz a generált szám. Ne legyen nagyobb Integer.MAX_VALUE/2-nél!

egyenletes

public int egyenletes(int a,
                      int b)
a és b-1 közötti, egyenletes eloszlású, egész értékű ,,véletlenszámot'' generál (a határokat is beleértve), az értéket a megadott determinisztikus sorból véve, ha az nem üres.
Parameters:
n - ennél határozottan kisebb lesz a generált szám. Ne legyen nagyobb Integer.MAX_VALUE/2-nél!

poisson

public int poisson(double lambda,
                   int felso)
Poisson-eloszlású (lambda paraméterrel), egész értékű ,,véletlenszámot'' generál. Az átlagos futásidő lambda-val arányos. Várható érték: lambda. Szórás: sqrt(lambda). Csak felso-nél kisebb (nemnegatív) számot ad vissza. Minimum: 0. Maximum: amennyi belefér.

See Knuth, ACP, Section 3.4.1 Paragraph F.


poisson

public int poisson(double lambda)
Csakúgy, mint kétparaméteres változata, de a felső határ Integer.MAX_VALUE.

exponencialis

public int exponencialis(double lambda,
                         int felso)
Exponenciális eloszlású (lambda paraméterrel) ,,véletlenszám'' kerekített (Math.round()), egész értékét generálja. Csak felso-nél kisebb (nemnegatív) számot ad vissza. A futásidő O(1). Várható érték: 1/lambda. Szórás: 1/lambda. Minimum: 0. Maximum: amennyi belefér.
See Also:
java.lang.Math#round

exponencialis

public int exponencialis(double lambda)
Csakúgy, mint kétparaméteres változata, de a felső határ Integer.MAX_VALUE.

normalis

public int normalis(double m,
                    double sigma,
                    int also,
                    int felso)
Normális (Gauss-)eloszlású (m várható értékű, sigma szórású) ,,véletlenszám'' kerekített (Math.round()), egész értékét generálja. Csak `felso'-nél kisebb számot ad vissza. Csak `also'-nél nagyobb-egyenlo számot ad vissza. A futásidő JRE-függő.
See Also:
java.lang.Math#round

normalis

public int normalis(double m,
                    double sigma)
Csakúgy, mint háromparaméteres változata, de a felső határ Integer.MAX_VALUE.

normalis

public int normalis()
Csakúgy, mint kétraméteres változata, de standard normális eloszlás szerint generál (m=0, sigma=1).

getRandom

public java.util.Random getRandom()
Returns:
a használt véletlenszám-generátor

getUtolso

public int getUtolso()
Returns:
az utolsónak előírt veletlenszam (0, ha nincs)

sorbaDelta

public void sorbaDelta(int ujertek)
Új értéket fűz a determinizáló sor végéhez, de kivonja belőle az utolsó elemet.