我想在播种随机数生成过程的同时,从包含数字和NaN
s的有限集中随机选择元素。
到目前为止,我可以在没有播种的情况下使其工作:
data = [0, 1, 2, 3, 4, 5, nan];
sample = datasample(data, 50);
但如果我想为数字生成播种:
seed = rng(100);
sample = datasample(seed, data, 50);
我收到以下错误:
Error using datasample (line 89)
Sample size K must be a non-negative integer.
即使datasample
的语法是(*):
[y,...] = datasample(s,data,k,...)
我也试过使用randsample
,但我得到了类似的结果。
答案 0 :(得分:3)
关于第一个输入,文档并不是非常明确的。您需要传递一个RandStream
对象作为第一个输入参数而不是struct
生成的rng
(作为旁注,rng
的输出是之前的设置不是新设置)。
这相当于你想要做的事情
stream = RandStream('mt19937ar', 'Seed', 100);
output = datasample(stream, data, k);
如果您想使用rng
来指定种子,可以调用rng
,然后使用RandStream.getGlobalStream
获取当前的全局随机数流,然后传递 到datasample
。虽然datasample
将使用全局随机数流(如果没有提供),但这稍微减少了。
rng(100)
stream = RandStream.getGlobalStream();
output = datasample(stream, data, k);