Распределить целые числа со знаком с уклоном в Matlab - PullRequest
0 голосов
/ 04 июня 2018

Вот пример кода, который случайным образом распределяет значения -1,+1 в массиве размером N

N=100;    
D = sign(rand(1,N)-0.5).*ones(1,N);

Как я могу контролировать уровень смещения в распределении чисел?

скажем, например, что только 20% массива будет иметь +1, а остальные -1

Ответы [ 2 ]

0 голосов
/ 04 июня 2018

что-то вроде следующего

VAL = [-1 1]   % 2 values
P = .8          % probabbility of selecting first value
Ndraw = 100      % number of draws
R = rand(Ndraw,1) < P 
SEL = VAL(2 - R) % use as index into VAL

    SEL =

  Columns 1 through 19

     1    -1    -1     1    -1    -1     1    -1    -1    -1    -1    -1    -1    -1    -1    -1    -1    -1    -1

  Columns 20 through 38

    -1     1     1    -1    -1    -1     1    -1     1    -1    -1    -1    -1    -1    -1    -1    -1    -1    -1

  Columns 39 through 57

    -1    -1    -1    -1    -1    -1    -1    -1     1    -1     1    -1     1     1     1    -1    -1    -1    -1

  Columns 58 through 76

    -1    -1    -1    -1     1    -1    -1    -1    -1    -1     1    -1    -1    -1    -1    -1    -1     1     1

  Columns 77 through 95

    -1    -1     1    -1    -1     1    -1    -1    -1    -1     1    -1    -1    -1    -1     1    -1     1    -1

  Columns 96 through 100

    -1     1    -1    -1    -1
0 голосов
/ 04 июня 2018

Как вы можете сделать рассылку, где 50% (0,5) чисел отрицательны?

N=100;    
D = sign(rand(1,N)-0.5).*ones(1,N);

Как вы можете сделать рассылку, где 20% (0,2) чисел отрицательны??

N=100;    
D = sign(rand(1,N)-0.2).*ones(1,N);

Как сделать распределение, где 80% (0,8) чисел отрицательны?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...