randDiscrete

Syntax

randDiscrete(v, p, count)

Arguments

v is a vector/tuple indicating the sample data.

p is a vector of floating point type of the same length as v. Each element in p must be a positive number, indicating the probability distribution of v.

count is a positive integer indicating the length of the output vector.

Details

Generate a sample of size count with random values sampling from v based on the specified probability distribution p.

Examples

$ randDiscrete(1..5, [0.1, 0.1, 0.2, 0.2, 0.4], 10)
[2,3,5,2,5,5,2,1,1,2]

//If the sum of p is not 1, it will be normalized automatically.
$ randDiscrete(1..5, [0.1, 0.2, 0.3, 0.4, 0.5], 5)
[5,1,2,3,5]

$ randDiscrete(`A`B`C`E`F, [0.1, 0.2, 0.3, 0.4, 0.5], 5)
["C","E","B","C","F"]

// Sample from each element in a tuple.
$ randDiscrete([[1,2], [2,3,4], 'S', 'abc'], [0.3, 0.3, 0.2, 0.1], 10)
('S',[2,3,4],[1,2],[2,3,4],[1,2],'S','S',[2,3,4],[2,3,4],[2,3,4])

// Sample from each vector in an array vector.
$ a = array(INT[], 0, 10).append!([1 2 3, 4 5,6 7 8, 9 NULL])
$ randDiscrete(a, [0.1, 0.2, 0.3, 0.4], 10)
[[9,00i],[9,00i],[9,00i],[4,5],[9,00i],[1,2,3],[9,00i],[6,7,8],[9,00i],[9,00i]]