SSJ API Documentation
Stochastic Simulation in Java
Loading...
Searching...
No Matches
PascalGen.java
1/*
2 * Class: PascalGen
3 * Description: Pascal random variate generators
4 * Environment: Java
5 * Software: SSJ
6 * Copyright (C) 2001 Pierre L'Ecuyer and Universite de Montreal
7 * Organization: DIRO, Universite de Montreal
8 * @author
9 * @since
10 *
11 *
12 * Licensed under the Apache License, Version 2.0 (the "License");
13 * you may not use this file except in compliance with the License.
14 * You may obtain a copy of the License at
15 *
16 * http://www.apache.org/licenses/LICENSE-2.0
17 *
18 * Unless required by applicable law or agreed to in writing, software
19 * distributed under the License is distributed on an "AS IS" BASIS,
20 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21 * See the License for the specific language governing permissions and
22 * limitations under the License.
23 *
24 */
25package umontreal.ssj.randvar;
26
27import umontreal.ssj.rng.*;
28import umontreal.ssj.probdist.*;
29
39public class PascalGen extends RandomVariateGenInt {
40 protected int n;
41 protected double p;
42
47 public PascalGen(RandomStream s, int n, double p) {
48 super(s, new PascalDist(n, p));
49 setParams(n, p);
50 }
51
56 super(s, dist);
57 if (dist != null)
58 setParams(dist.getN1(), dist.getP());
59 }
60
65 public static int nextInt(RandomStream s, int n, double p) {
66 return PascalDist.inverseF(n, p, s.nextDouble());
67 }
68
72 public int getN() {
73 return n;
74 }
75
79 public double getP() {
80 return p;
81 }
82
86 protected void setParams(int n, double p) {
87 if (p < 0.0 || p > 1.0)
88 throw new IllegalArgumentException("p not in [0, 1]");
89 if (n <= 0)
90 throw new IllegalArgumentException("n <= 0");
91 this.p = p;
92 this.n = n;
93 }
94}
static int inverseF(double n, double p, double u)
Computes the inverse function without precomputing tables.
The Pascal distribution is a special case of the negative binomial distribution slaw00a  (page 324) w...
double getP()
Returns the parameter of this object.
PascalGen(RandomStream s, int n, double p)
Creates a Pascal random variate generator with parameters and , using stream s.
static int nextInt(RandomStream s, int n, double p)
Generates a new variate from the Pascal distribution, with parameters &#160;n and &#160;p,...
void setParams(int n, double p)
Sets the parameter and of this object.
int getN()
Returns the parameter of this object.
PascalGen(RandomStream s, PascalDist dist)
Creates a new generator for the distribution dist, using stream s.
This interface defines the basic structures to handle multiple streams of uniform (pseudo)random numb...
double nextDouble()
Returns a (pseudo)random number from the uniform distribution over the interval , using this stream,...