如何在matlab中有效地生成随机符号/{-1,1}?

joh*_*ood 3 random performance matlab sign

在 Matlab 中,我需要随机生成符号(即 {-1,1})。我想出了一个解决方案,但我需要这个更轻。我的解决方案意味着调用两个函数,一个乘法(虽然它是一个二进制移位)和一个减法。

这是我的代码:

L=1000;
x=2*round(rand(L,1))-1;
Run Code Online (Sandbox Code Playgroud)

Eug*_*Sh. 5

使用以下方法获取+1随机数何时大于0.5-1否则:

(rand(L,1) > 0.5)*2 - 1
Run Code Online (Sandbox Code Playgroud)

或类似randi

randi([0,1], L, 1)*2 - 1
Run Code Online (Sandbox Code Playgroud)