24小时热门版块排行榜    

查看: 2742  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 欢迎发来filecode的Mz6后的代码验证其规律 +32 医学老男孩 2026-08-13 72/3600 2026-08-16 13:15 by 医学老男孩
[基金申请] 我的国基提前知道中了,可是同事的操作让我实在接受不了,怎么会有这样的人 +11 家与远方 2026-08-10 16/800 2026-08-16 10:28 by ray43
[基金申请] 有时候,自然基金真的不能太认真 (我的申报经验) +10 majunge000 2026-08-11 12/600 2026-08-16 08:18 by xli1984
[基金申请] 时间戳又变了8-15 +12 archvillain 2026-08-15 23/1150 2026-08-15 20:47 by foyo404
[基金申请] filecode=后面第一个是大写字母 +6 wangze12014 2026-08-14 7/350 2026-08-15 20:12 by gltch
[基金申请] filecode +8 cratir 2026-08-14 12/600 2026-08-15 18:08 by zyfgau
[基金申请] 小木虫上这么多卖论文的,真有人买论文么?感觉没必要啊 +12 Tide man 2026-08-10 13/650 2026-08-15 16:34 by 氺木
[基金申请] 各位道友,我要去昆明玩几天,回来见。 +7 Tide man 2026-08-14 8/400 2026-08-15 01:11 by arzu_hma
[基金申请] 奇怪,两个人的filecode固定段从头到尾一模一样 +8 布布和一二 2026-08-10 11/550 2026-08-14 14:58 by Equinoxhua
[硕博家园] 请教兼职经验 +3 是阿文鸭 2026-08-09 3/150 2026-08-14 12:07 by HER12025
[硕博家园] 读博的好处 +4 lnee 2026-08-11 4/200 2026-08-14 10:20 by ahsoarli
[基金申请] filecode +15 documentary 2026-08-10 17/850 2026-08-14 10:08 by kissu88
[基金申请] 重要来源:本周末出结果 +10 瞬息宇宙 2026-08-12 10/500 2026-08-13 15:46 by likettle
[基金申请] 分享一下我之前已中青C的计划书的filecode +4 布布和一二 2026-08-11 5/250 2026-08-13 12:56 by cratir
[基金申请] 结合人工智能,周易传统文化,filecode打分制来了,3分以上希望很大。 +3 Tide man 2026-08-12 4/200 2026-08-13 08:35 by ZJTJZ
[基金申请] 综述论文作为代表作会不会影响评审专家的印象分? +11 yufeiwaner 2026-08-09 13/650 2026-08-12 08:17 by yufeiwaner
[基金申请] 帮忙看看fileCode +7 wwncly 2026-08-10 13/650 2026-08-11 19:36 by 冰心玉壶晴
[基金申请] 确定了,国自然21号放榜 +6 布布和一二 2026-08-10 7/350 2026-08-10 19:15 by 2000zf36392
[基金申请] 国自然结果 +4 Vierhys 2026-08-10 8/400 2026-08-10 15:06 by Vierhys
[基金申请] 据悉今年马上要出结果了 +7 瞬息宇宙 2026-08-10 8/400 2026-08-10 12:42 by Vivilian
信息提示
请填处理意见