how to random -1 and 1?

m=round(2*rand(8)-1)
the output:
m =
1 0 0 1 0 0 0 -1
1 1 0 0 1 1 0 -1
0 1 -1 0 0 0 1 1
1 0 0 1 0 0 1 0
0 0 -1 1 1 -1 1 1
-1 -1 -1 1 -1 0 0 -1
-1 -1 1 -1 0 -1 1 0
0 -1 0 1 1 0 0 0
but i don't want zero's output. can anyone help me clear this? thanks

 Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 27 Jul 2013
Edited: Azzi Abdelmalek on 27 Jul 2013
m=randi(2,8)-1
m(~m)=-1
%or
m=randi([-1 ,1],8)
m(~m)=-1
%or
m=fix(rand(8)+0.5)
m(~m)=-1

3 Comments

kjetil87
kjetil87 on 27 Jul 2013
you should be carefull about method 2 if you want it to be actually random, here there is a 2/3 chance of -1 , and 1/3 of +1.
Exact
Tia
Tia on 27 Jul 2013
ok, thank you for your advice

Sign in to comment.

More Answers (3)

Andrei Bobrov
Andrei Bobrov on 27 Jul 2013
Edited: Andrei Bobrov on 27 Jul 2013
2*randi([0 1],8)-1
or
2*(rand(8)>.5) - 1

2 Comments

Is the probabilty of getting -1 and +1 is 0.5. If not, kindly suggest a way to get it.
Yes, the probability of getting -1 and +1 is 0.5

Sign in to comment.

Francesco Sgromo
Francesco Sgromo on 8 Feb 2023
Edited: Francesco Sgromo on 8 Feb 2023

0 votes

-1^(randi(2))

1 Comment

(-1).^randi(2,8,8)
ans = 8×8
1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 1

Sign in to comment.

Categories

Asked:

Tia
on 27 Jul 2013

Commented:

on 8 Feb 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!