1

我想知道是否有一个函数可以从 Matlab 中的一组数字中生成随机数?例如说我有集合 [-1 1]。如何从该集合中生成数字?我曾尝试使用 randi([-1,1]) 但这显然会生成数字 -1,0 和 1,我想统一生成没有 0 的数字,只包括 -1 和 1。我提前道歉如果这似乎是一个微不足道的问题,但我似乎找不到答案。

感谢您的任何帮助,您可以提供。

编辑:我为上述问题找到了一个简单的解决方案:(randi([0 1])*2) - 1。这只解决了这个问题,而不是从指定集合中生成数字。

4

3 回答 3

2

那么,有没有一个函数可以从集合 1:2,或者一般来说,从集合 1:n 中均匀地生成整数,其中 n 是你的集合中的元素数?(是的)

如果上面的答案是肯定的,那么这些数字可以用作生成集的索引吗?(是的)

A = [-1 1];
n = numel(A);
A(ceil(rand*n))

它会随机且均匀地采样吗?(是的)

于 2012-05-03T17:09:55.997 回答
1

生成 1 到 N 范围内的均匀随机整数(其中 N 是集合的大小)。然后用它来索引到集合中。

于 2012-05-03T17:03:45.680 回答
0
>> 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
于 2012-05-03T17:12:15.417 回答