24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1338  |  回复: 4

rxy7cm

铜虫 (小有名气)

[求助] 怎么在一个0矩阵中产生随机分布的1小矩阵

要在一个100*100的0矩阵中产生随机分布的5*5的1矩阵,MATLAB可以实现,但是C语言就是不行,求大神指点,帮忙转化成C语言,现在问题应该出在C语言产生随机数上。
MATLAB代码如下:                 

a=zeros(100,100);
for i =1:100
for j=1:100
p=round((i+4)/5);
q=round((j+4)/5);
m=rand;
for c1=1:5
for c2=1:5
if m>0.3
a((p-1)*5+c1,(q-1)*5+c2)=1;
else
a((p-1)*5+c1,(q-1)*5+c2)=0;
end
end
end
end
回复此楼

» 猜你喜欢

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

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

绿遍山原

铜虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
用m = rand() % 100产生0-99之间的随机整数,然后按你的程序赋值就行了。要包含stdlib.h
要夢遊,不要催眠。
2楼2013-11-06 11:04:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

绿遍山原

铜虫 (小有名气)

【答案】应助回帖

引用回帖:
2楼: Originally posted by 绿遍山原 at 2013-11-06 11:04:12
用m = rand() % 100产生0-99之间的随机整数,然后按你的程序赋值就行了。要包含stdlib.h

不好意思看错了,应该是m=((double) rand())/RAND_MAX 产生0-1之间的小数。
要夢遊,不要催眠。
3楼2013-11-06 11:07:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

rxy7cm

铜虫 (小有名气)

引用回帖:
3楼: Originally posted by 绿遍山原 at 2013-11-06 11:07:04
不好意思看错了,应该是m=((double) rand())/RAND_MAX 产生0-1之间的小数。...

能帮忙把语言转化成C语言吗?自己写的运行不出来
double rate=0.3;
void main()

{
        fp1=fopen(WXYZ_1,"w";

        for(i = 1; i<n; i++)

        {                        
                p=(i+4)/5;
       
                for(j =1; j<n; j++)               
                {                                
                        q=(j+4)/5;       
  
                        srand((unsigned)time(NULL));

                      r=((double)rand())/RAND_MAX;

                        for(c1 = 1; c1<m; c1++)                       
                        {  
       
                                a=(p-1)*m+c1;                 
                                for(c2 = 1; c2<m; c2++)
       
                                {  
                                        b=(q-1)*m+c2;
                               
                                if(r>rate)                                                               
                                A[a]=1;
                                else
                                A[a]=0;
                                       
                                       
               
                                }
                       
                       
               
                               

               
                        }


fprintf(fp1,"%d ",A[j]);       

                       
                                                               
       
                }       


        fprintf(fp1,"%d\n";
       
       
       
        }                               
        fclose(fp1);
}
4楼2013-11-06 16:43:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

rxy7cm

铜虫 (小有名气)

引用回帖:
4楼: Originally posted by rxy7cm at 2013-11-06 16:43:05
能帮忙把语言转化成C语言吗?自己写的运行不出来
double rate=0.3;
void main()

{
        fp1=fopen(WXYZ_1,"w";

        for(i = 1; i<n; i++)

        {                        
                p=(i+4)/5;
       
                for(j =1; j<n; j++)         ...

你这不对吧,得输出矩阵彩信,你输出的咋是一维的
5楼2013-11-06 17:02:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 rxy7cm 的主题更新
信息提示
请填处理意见