从一组生成一致的随机数

时间:2012-05-03 17:01:12

标签: matlab random

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

感谢您提供的任何帮助。

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

3 个答案:

答案 0 :(得分:2)

那么,是否有一个函数可以从集合1:2统一生成整数,或者通常是从集合1:n生成整数,其中n是集合中元素的数量? (是)

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分: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