o

# Drv 

### Companion trait Drv

#### object Drv

Create discrete random variables representing arbitrary distributions.

Linear Supertypes
Ordering
1. Alphabetic
2. By Inheritance
Inherited
1. Drv
2. AnyRef
3. Any
1. Hide All
2. Show All
Visibility
1. Public
2. All

### Type Members

1. case class Aliased(alias: IndexedSeq[Int], prob: IndexedSeq[Double]) extends Drv with Product with Serializable

A Drv using the Aliasing method [1]: a distribution is described by a set of probabilities and aliases.

A Drv using the Aliasing method [1]: a distribution is described by a set of probabilities and aliases. In order to pick a value j in distribution Pr(Y = j), j=1..n, we first pick a random integer in the uniform distribution over 1..n. We then inspect the probability table whose value represents a biased coin; the random integer is returned with this probability, otherwise the index in the alias table is chosen.

"It is a peculiar way to throw dice, but the results are indistinguishable from the real thing." -Knuth (TAOCP Vol. 2; 3.4.1 p.121).

[1] Alastair J. Walker. 1977. An Efficient Method for Generating Discrete Random Variables with General Distributions. ACM Trans. Math. Softw. 3, 3 (September 1977), 253-256. DOI=10.1145/355744.355749 http://doi.acm.org/10.1145/355744.355749

### Value Members

1. final def !=(arg0: Any)
Definition Classes
AnyRef → Any
2. final def ##(): Int
Definition Classes
AnyRef → Any
3. final def ==(arg0: Any)
Definition Classes
AnyRef → Any
4. def apply(dist: Seq[Double]): Drv

Create a new Drv representing the passed in distribution of probabilities.

Create a new Drv representing the passed in distribution of probabilities. These must add up to 1, however we cannot reliably test for this due to numerical stability issues: we're operating on the honor's system.

5. final def asInstanceOf[T0]: T0
Definition Classes
Any
6. def clone()
Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@native() @throws( ... )
7. final def eq(arg0: AnyRef)
Definition Classes
AnyRef
8. def equals(arg0: Any)
Definition Classes
AnyRef → Any
9. def finalize(): Unit
Attributes
protected[java.lang]
Definition Classes
AnyRef
Annotations
@throws( classOf[java.lang.Throwable] )
10. def fromWeights(weights: Seq[Double]): Drv

Create a probability distribution based on a set of weights (ratios).

11. final def getClass(): Class[_]
Definition Classes
AnyRef → Any
Annotations
@native()
12. def hashCode(): Int
Definition Classes
AnyRef → Any
Annotations
@native()
13. final def isInstanceOf[T0]
Definition Classes
Any
14. final def ne(arg0: AnyRef)
Definition Classes
AnyRef
15. def newVose(dist: Seq[Double])

Generate probability and alias tables in the manner of to Vose [1].

Generate probability and alias tables in the manner of to Vose [1]. This algorithm is simple, efficient, and intuitive. Vose's algorithm is O(n) in the distribution size. The paper below contains correctness and complexity proofs.

[1] Michael D. Vose. 1991. A Linear Algorithm for Generating Random Numbers with a Given Distribution. IEEE Trans. Softw. Eng. 17, 9 (September 1991), 972-975. DOI=10.1109/32.92917 http://dx.doi.org/10.1109/32.92917

16. final def notify(): Unit
Definition Classes
AnyRef
Annotations
@native()
17. final def notifyAll(): Unit
Definition Classes
AnyRef
Annotations
@native()
18. final def synchronized[T0](arg0: ⇒ T0): T0
Definition Classes
AnyRef
19. def toString(): String
Definition Classes
AnyRef → Any
20. final def wait(): Unit
Definition Classes
AnyRef
Annotations
@throws( ... )
21. final def wait(arg0: Long, arg1: Int): Unit
Definition Classes
AnyRef
Annotations
@throws( ... )
22. final def wait(arg0: Long): Unit
Definition Classes
AnyRef
Annotations
@native() @throws( ... )