我想在为随机数生成过程播种时,从包含数字和 NaN
的有限集中随机选择元素。
到目前为止,我可以在不播种的情况下让它工作:
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
,但我得到了类似的结果。
最佳答案
文档对第一个输入不是很明确。你需要传递一个 RandStream
对象作为第一个输入参数,而不是 rng
生成的 struct
(作为旁注,rng
的输出是 previous 设置不是新 设置)。
这相当于你正在尝试做的事情
stream = RandStream('mt19937ar', 'Seed', 100);
output = datasample(stream, data, k);
如果您想改用 rng
来指定种子,您可以调用 rng
然后使用 RandStream.getGlobalStream
获取当前的全局随机数流,然后将 that 传递给 datasample
。这有点冗余,因为如果未提供,datasample
将使用全局随机数流。
rng(100)
stream = RandStream.getGlobalStream();
output = datasample(stream, data, k);
关于matlab - 如何通过播种随机抽样数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41643883/