gpt4 book ai didi

matlab - 如何通过播种随机抽样数据?

转载 作者:行者123 更新时间:2023-12-01 12:24:01 25 4
gpt4 key购买 nike

我想在为随机数生成过程播种时,从包含数字和 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,但我得到了类似的结果。

(*) https://it.mathworks.com/help/stats/datasample.html

最佳答案

文档对第一个输入不是很明确。你需要传递一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com