如何通过播种随机抽样数据?
How to randomly sample data with seeding?
我想在为随机数生成过程播种时,从包含数字和 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 设置不是 new 设置)。
这相当于您正在尝试做的事情
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);
我想在为随机数生成过程播种时,从包含数字和 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 设置不是 new 设置)。
这相当于您正在尝试做的事情
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);