# qrand

Class: qrandstream

Generate quasi-random points from stream

## Syntax

```x = qrand(q) X = qrand(q,n) ```

## Description

`x = qrand(q)` returns the next value `x` in the quasi-random number stream `q` of the `qrandstream` class. `x` is a 1-by-d vector, where d is the dimension of the stream. The command sets `q.State` to the index in the underlying point set of the next value to be returned.

`X = qrand(q,n)` returns the next `n` values `X` in an `n`-by-d matrix.

Objects `q` of the `qrandstream` class encapsulate properties of a specified quasi-random number stream. Values of the stream are not generated and stored in memory until `q` is accessed using `qrand`.

## Examples

Use `qrandstream` to construct a 3-D Halton stream, based on a point set that skips the first 1000 values and then retains every 101st point:

```q = qrandstream('halton',3,'Skip',1e3,'Leap',1e2) q = Halton quasi-random stream in 3 dimensions Point set properties: Skip : 1000 Leap : 100 ScrambleMethod : none nextIdx = q.State nextIdx = 1```

Use `qrand` to generate two samples of size four:

```X1 = qrand(q,4) X1 = 0.0928 0.3475 0.0051 0.6958 0.2035 0.2371 0.3013 0.8496 0.4307 0.9087 0.5629 0.6166 nextIdx = q.State nextIdx = 5 X2 = qrand(q,4) X2 = 0.2446 0.0238 0.8102 0.5298 0.7540 0.0438 0.3843 0.5112 0.2758 0.8335 0.2245 0.4694 nextIdx = q.State nextIdx = 9```

Use `reset` to reset the stream, then generate another sample:

```reset(q) nextIdx = q.State nextIdx = 1 X = qrand(q,4) X = 0.0928 0.3475 0.0051 0.6958 0.2035 0.2371 0.3013 0.8496 0.4307 0.9087 0.5629 0.6166```