24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 2386  |  回复: 9

tomcat2000

金虫 (著名写手)

[求助] matlab产生随机二维矩阵,这些随机数只能是-1或者1?

怎么在matlab产生随机二维矩阵,这些随机数只能是-1或者1?比如要产生100X100矩阵。但是还要要求这个产生的随机二维矩阵中,“-1”的总个数不能超过100个。谢谢。
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

awormvista

银虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
tomcat2000: 金币+5, 有帮助 2012-04-22 13:27:57
先随机生成一个矩阵,然后统计下小于N的数量,。。。循环。。。直到数量为100,将这些数改为-1
None
2楼2012-04-22 11:41:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiangqianzsh

木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
tomcat2000: 金币+5, ★★★很有帮助 2012-04-22 13:28:07
randperm(10^4)生成1:10^4的整数的一个随机排列矩阵,<100的数据换成-1即可,之后把1*10000矩阵变成100*100的矩阵就行了
3楼2012-04-22 12:45:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zzzx2008

银虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
tomcat2000: 金币+15, ★★★★★最佳答案 2012-04-22 13:28:12
这样的矩阵 就不能称为 随机矩阵了啊
clear;
clc;
N=10;%二维 矩阵行列值
zero_num=5;%小于零的个数
a=randint(N,N);%0 1 随机
b=reshape(a,1,N*N);% 转化一维 处理方便
c=b*2-1;%+ - 1
d=find(c<0);%寻找 < 0的 下标
for i=1:length(d)-zero_num
    c(d(i))=c(d(i))+1;%<0 的 +1
end
a=reshape(c,N,N);%回归 二维
这个程序生成的矩阵 -1集中在尾部
4楼2012-04-22 12:53:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

引用回帖:
4楼: Originally posted by zzzx2008 at 2012-04-22 12:53:07:
这样的矩阵 就不能称为 随机矩阵了啊
clear;
clc;
N=10;%二维 矩阵行列值
zero_num=5;%小于零的个数
a=randint(N,N);%0 1 随机
b=reshape(a,1,N*N);% 转化一维 处理方便
c=b*2-1;%+ - 1
d=find(c<0);% ...

这是不对的

楼主要求“随机数只能是-1或者1”,而这个最后生成的矩阵里面有0
5楼2012-04-23 10:56:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

如果楼主对-1的随机性有要求的话,这个事情可以用洗牌法来做

要求输出:随机MxN二维矩阵(随机数只能是-1或者1),要求-1的总个数小于等于K个

算法:
1. 生成临时向量:temp = ones(1, M*N)
2. 随机生成-1的个数(在1到K整数中取值):minusOnes = randi(K)
3. 把-1放入temp中:temp(1:minusOnes) = -1
4. 随机交换temp中两个值(洗牌),重复很多次(例如10000次,和M*N的规模相关):
CODE:
for i = 1:10000
    i1 = randi(M*N);
    i2 = randi(M*N);
    t = temp(i1);
    temp(i1) = temp(i2);
    temp(i2) = t;
end

5. 变回二维矩阵:OUT = reshape(temp, M, N)
6楼2012-04-23 11:12:41
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zzzx2008

银虫 (小有名气)

引用回帖:
6楼: Originally posted by sudo at 2012-04-23 11:12:41:
如果楼主对-1的随机性有要求的话,这个事情可以用洗牌法来做

要求输出:随机MxN二维矩阵(随机数只能是-1或者1),要求-1的总个数小于等于K个

算法:
1. 生成临时向量:temp = ones(1, M*N)
2. 随机生成 ...

兄弟的想法 不错  值得考虑
看看下面 这个 如何?
clear;
clc;
N=10;%二维 矩阵行列值
zero_num=5;%小于零的个数
a=randint(N,N);%0 1 随机
b=reshape(a,1,N*N);% 转化一维 处理方便
c=b*2-1;%+ - 1
d=find(c<0);%寻找 < 0的 下标
%在这些数中随机的找lengh(d)-zero_num 个数据 改成+1
%e=randint(1,length(d)-zero_num,[1 length(d)]);
e=randperm(length(d));
f=e(1:length(d)-zero_num);
for i=1:length(d)-zero_num
    c(d(f(i)))=c(d(f(i)))+2;%<0 的 +2
end
a=reshape(c,N,N);%回归 二维
7楼2012-04-23 23:19:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tomcat2000

金虫 (著名写手)

引用回帖:
7楼: Originally posted by zzzx2008 at 2012-04-23 23:19:12:
兄弟的想法 不错  值得考虑
看看下面 这个 如何?
clear;
clc;
N=10;%二维 矩阵行列值
zero_num=5;%小于零的个数
a=randint(N,N);%0 1 随机
b=reshape(a,1,N*N);% 转化一维 处理方便
c=b*2-1;%+ - 1
...

thank you
8楼2012-04-24 07:28:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

引用回帖:
7楼: Originally posted by zzzx2008 at 2012-04-23 23:19:12:
兄弟的想法 不错  值得考虑
看看下面 这个 如何?
clear;
clc;
N=10;%二维 矩阵行列值
zero_num=5;%小于零的个数
a=randint(N,N);%0 1 随机
b=reshape(a,1,N*N);% 转化一维 处理方便
c=b*2-1;%+ - 1
...

原来还有randperm这等神物,那么可以写得很简洁了

这个函数返回一个MxN的只含有+-1的矩阵,而且里面-1的个数精确等于K
CODE:
function A = MyMatrix(M, N, K)
    A = ones(1, M*N);
    t = randperm(M*N);
    A(t(1:K)) = -1;
    A = reshape(A, M, N);

如果需要给K增加一个不确定性,比如楼主的要求:“产生100X100矩阵。但是还要要求这个产生的随机二维矩阵中,-1的总个数不能超过100个”,只需要这么调用就行了
CODE:
MyMatrix(100, 100, randi(100))

9楼2012-04-24 10:16:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

嗯,谨慎估计randperm应该也是洗牌法实现的,因为这么实现最方便
10楼2012-04-24 10:17:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 tomcat2000 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 0703化学 +14 妮妮ninicgb 2026-04-04 15/750 2026-04-06 08:32 by zhangdingwa
[考研] 一志愿 江南大学 085602 化工专硕 338分求调剂 +14 路痴小琪 2026-04-05 14/700 2026-04-06 07:25 by hmn_wj
[考研] 332求调剂 +16 小小孟... 2026-04-05 17/850 2026-04-06 00:52 by fmesaito
[考研] 302分 085601求调剂推荐 +11 zyx上岸! 2026-04-05 11/550 2026-04-05 22:13 by dongzh2009
[考研] 315求调剂 +5 &123456789 2026-04-05 5/250 2026-04-05 19:55 by nepu_uu
[考研] 计算机11408,286分求调剂 +7 木子念晞 2026-04-05 7/350 2026-04-05 19:02 by chy09050039
[考研] 0860 求调剂 一志愿国科大 348 分 +3 WiiiP 2026-04-03 3/150 2026-04-05 17:43 by Ecowxq666!
[考研] 283分求调剂 +9 试试看呗 2026-04-04 9/450 2026-04-05 10:27 by 果冻大王
[考研] 085602调剂 初试总分335 +12 19123253302 2026-04-04 12/600 2026-04-05 08:08 by 544594351
[考研] 323求调剂 +8 李佳乐1 2026-04-04 8/400 2026-04-04 22:26 by hemengdong
[考研] 材料与化工306分找调剂 +23 沧海轻舟e 2026-04-02 27/1350 2026-04-04 21:52 by laoshidan
[考研] 278求调剂 +3 依旧! 2026-04-02 4/200 2026-04-04 20:27 by 蓝云思雨
[考研] 一志愿085404,总分291,四级已过,求调剂 +5 阿俊阿俊阿俊 2026-04-04 7/350 2026-04-04 13:23 by 莲菜就是藕吧
[考研] 266分,一志愿电气工程,本科材料,求材料专业调剂 +9 哇呼哼呼哼 2026-04-02 9/450 2026-04-03 12:05 by 1753564080
[基金申请] 请问共同通讯和共同一作的认可度问题 10+4 psa1234 2026-04-01 10/500 2026-04-03 11:08 by Kittylucky
[考研] 一志愿陕西师范大学生物学317分 +5 1563日。 2026-04-02 5/250 2026-04-03 06:58 by ilovexiaobin
[考研] 22408 266求调剂 +3 masss11222 2026-04-02 3/150 2026-04-02 18:11 by 笔落锦州
[考研] 求调剂 +7 Aniyaio 2026-04-02 7/350 2026-04-02 16:42 by zzsw+
[考研] 一志愿北京科技大学材料学硕328分求调剂 +6 1段时间 2026-03-31 7/350 2026-04-02 13:57 by 3041
[考研] 083000环境科学与工程调剂,总分281 +4 橙子(胜意) 2026-03-30 4/200 2026-03-31 00:44 by Linzejun
信息提示
请填处理意见