我想知道是否有一个函数可以在Matlab中从一组数字生成随机数?比如说我有集合[-1 1]。如何从该组中生成数字?我曾尝试使用randi([ - 1,1]),但显然会生成数字-1,0和1,我想统一生成数字而没有0,只包括-1和1.我提前道歉如果这似乎是一个微不足道的问题,但我似乎无法找到答案。
感谢您提供的任何帮助。
编辑:我找到了一个简单的解决方案:(randi([0 1])* 2) - 1.这只解决了这个问题而不是指定集合中的一代数字。
答案 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