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

标签 matlab random random-seed

我想在为随机数生成过程播种时,从包含数字和 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/

相关文章:

ruby-on-rails - 在 Ruby on Rails 中使用固定装置播种数据是否危险

matlab - Matlab中如何使用GPU的共享内存?

matlab - 如何识别 MATLAB 脚本中所有未定义的函数

MATLAB : Help in finding minimum distance

python - 从函数中获取特定值

postgresql - 即使删除了某些行,使用种子值进行随机排序也会再次返回相同的集合吗?

matlab - 尝试实现imfilter,但图像变成红色

python - 我如何随机调用三个现有函数中的两个

python - 在 python 中打印循环时如何获得唯一的随机输出?

python - 如何 "stash"随机状态生成器状态