@sputter(t:tab, p:float, n:numeric)
n
. This tab is
filled as follows:
-
The process starts with a current value initialized with the first element in
t
. -
Successively, for each element e in the result, a random number p' between 0 and 1 is compared with
p
:-
if p' it is lower than
p
, then c becomes the value of e and the element next e is processed. -
If p' it is greater than
p
, then c takes the value of the next element int
, this new value becomes the value of e and the element next e is processed.
-
Not that this function is impure as it returns a different result for each invocation. For example:
@sputter([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 0.5, 16)
can return
→ [ 1, 1, 1, 1, 1, 2, 3, 4, 5, 6, 6, 6, 7, 8, 8, 9 ]
→ [ 1, 2, 3, 3, 4, 5, 6, 7, 8, 8, 9, 9, 9, 9, 10 ]
→ [ 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 4, 5, 5, 5 ]
See also Tab Manipulations @binary_search @car @cdr @clear [@clone] @concat @cons @copy @count @dim @domain @drop @empty @find @flatten @gnuplot @insert @iota @is_list @is_prefix @is_subsequence @is_suffix @lace @last @listify @map @max_val @median @member @normalize @occurs @parse @permute @push_back @push_front @range @reduce @remove @remove_duplicate @replace @reshape @resize @reverse @rotate @scan @scramble @size @slice @sort @sputter @stutter @succession @tab_history @tab_history_date @tab_history_rdate @take @to_num