以下のような方法はどうでしょうか?
>・乱数を使用して作る
>・乱数を使用して0.5以上は1、0.5未満は0といったようにしたい。
この部分は、結局のところ行列の各要素が 1/2 の確率で 0 か 1 となるため、randi 関数を使用しました。
また、若干処理の順番を入れ替えて、「対角成分はすべて1とする」という処理を最後に持ってきました。
% 乱数を使用して作る
% 乱数を使用して0.5以上は1、0.5未満は0といったようにしたい。
X = randi([0 1], 3, 3, 100);
% 対角部分(A(1,2)とA(2,1)成分やA(2,3)とA(3,2)成分)は同じ数字になるようにする
idx = tril(ones(3), -1) == 1;
idx = repmat(idx, 1, 1, 100);
X(idx) = 0;
X = X + permute(X,[2 1 3]);
% A(1,1)A(2,2)A(3,3)成分は全て1とする(対角線の所)
idx = eye(3) == 1;
idx = repmat(idx, 1, 1, 100);
X(idx) = 1;