我想知道是否有一个函数可以从 Matlab 中的一组数字中生成随机数?例如说我有集合 [-1 1]。如何从该集合中生成数字?我曾尝试使用 randi([-1,1]) 但这显然会生成数字 -1,0 和 1,我想统一生成没有 0 的数字,只包括 -1 和 1。我提前道歉如果这似乎是一个微不足道的问题,但我似乎找不到答案。
感谢您的任何帮助,您可以提供。
编辑:我为上述问题找到了一个简单的解决方案:(randi([0 1])*2) - 1。这只解决了这个问题,而不是从指定集合中生成数字。
那么,有没有一个函数可以从集合 1:2,或者一般来说,从集合 1:n 中均匀地生成整数,其中 n 是你的集合中的元素数?(是的)
如果上面的答案是肯定的,那么这些数字可以用作生成集的索引吗?(是的)
A = [-1 1];
n = numel(A);
A(ceil(rand*n))
它会随机且均匀地采样吗?(是的)
生成 1 到 N 范围内的均匀随机整数(其中 N 是集合的大小)。然后用它来索引到集合中。
>> S = sign(rand(1,10) - .5); S(S ~= 0)
ans =
1 -1 1 1 -1 1 -1 -1 1 -1
这显然是专门针对您的特定示例的,但可以应用相同的一般概念。
编辑:这是一个更一般的例子:
>> Set = [1 10 100]
Set =
1 10 100
>> Set(randi([1 3], 10, 1))
ans =
100 100 100 100 100 10 10 1 100 1