matlab课堂作业关于随机点的一些问题

matlab课堂作业关于随机点的一些问题,第1张

问题分析

1、随机生成点:直接用rand函数生成点的坐标;

2、点与点随机连成边:用rand函数生成NN矩阵,大于某设定门限值(例如08)则连边;

3、计算任意两点间的最短路径,分两种做法:

(1)随机取两点,计算最短路径,用graphshortestpath函数;

(2)把任意两点间的最短路径全部计算出来,形成一个矩阵,用graphallshortestpaths函数。

4、计算出最小生成树:用graphminspantree函数。

其中,graphshortestpath、graphallshortestpaths、graphminspantree均为生物信息工具箱(Bioinformatics Toolbox)中的函数。

参考代码

匆忙间编写了一段代码,供参考。

% 随机生成点的数量

N = 10;

% 生成点的坐标

x = rand(N, 1); y = rand(N, 1);

% 随机生成连接关系(随机数大于门限值为有连接)

L = rand(N, N) > 08;

% 计算各节点距离(保留两位小数)

D = round(squareform(pdist([x y]))100)/100;

% 用稀疏矩阵表示图

DG = sparse(DL);

% 转换为无向图

UG = tril(DG + DG');

% 显示图

view(biograph(UG,[],'ShowArrows','off','ShowWeights','on'));

% 计算最小生成树

ST = graphminspantree(UG);

view(biograph(ST,[],'ShowArrows','off','ShowWeights','on'))

% 计算所有节点间的最小路径(两两对应)

dist = graphallshortestpaths(UG,'directed',false);

disp(num2str(dist,'  %2f'))

% 计算任意(随机选择)两个节点间的最小路径

i = ceil(randN); j = ceil(randN);

[dist,path,pred] = graphshortestpath(UG,i,j,'directed',false);

% 突出显示最小路径

h = view(biograph(UG,[],'ShowArrows','off','ShowWeights','on'));

set(hNodes(path),'Color',[1 04 04])

fowEdges = getedgesbynodeid(h,get(hNodes(path),'ID'));

revEdges = getedgesbynodeid(h,get(hNodes(fliplr(path)),'ID'));

edges = [fowEdges;revEdges];

set(edges,'LineColor',[1 0 0])

set(edges,'LineWidth',15)

运行结果

1、随机生成的无向图:

2、最小生成树:

3、随机选择两节点,计算最小路径(节点6和9之间):

4、任意节点间的最小路径:

000  070  138  137  069  075  057  006  014  029

070  000  172  152  085  109  085  064  084  044

138  172  000  247  165  063  087  142  142  139

137  152  247  000  149  184  160  131  151  108

069  085  165  149  000  102  078  064  083  041

075  109  063  184  102  000  024  079  079  076

057  085  087  160  078  024  000  055  055  052

006  064  142  131  064  079  055  000  020  023

014  084  142  151  083  079  055  020  000  043

029  044  139  108  041  076  052  023  043  000

“为了公平起见,我们决定做一个随机点名小程序”不是说你们决定做一个小程序吗?为什么不自己做呀?没有必要一个班的学生都没有能力编写一个这种简单程序吧

百度知道并不是一个提交结果的平台,所谓知道就是将知识贡献,让大家获得启发,不是给人当奴隶干活!

适合。

1、首先,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。

2、其次,常规数组排列关联项目的方式可能不同于这些数据项目在记忆体或磁盘上顺序,数据的存取往往要在不同的排列顺序中转换

3、最后,链表允许插入和移除表上任意位置上的节点,但是不允许随机存取。

要点到固定一个人,需要使用一些技巧来保证效果:

1 名单输入:将参与者的名字输入电脑或手机,使用随机选择工具来选出一个幸运儿。但是,要保证这个名单已经事先准备好了,里面已经写好了要点到的那个人的名字。

2 重复选择:多次使用随机选择工具来选出幸运儿,并将结果进行记录。保证要点到的那个人每一次都被抽中。这种方法需要使用较为复杂的电脑程序或者工具,需要考虑到概率问题。

3 人工控制:通过人工手动 *** 作,将要点到的那个人设定为每一次点名的第一个人。例如,在班级里点名时,可以先将要点到的那个人放在课桌最前面,然后再开始点名。这种方法需要人工 *** 作,要求点名者具有较高的技巧和灵活性。

a=rand(100,1)500; %生成点的x坐标

b=rand(100,1)500;%生成点的Y坐标

plot(a,b,'')   %画点

for i=0:100:400

    for j=0:100:400

        rectangle('Position',[i,j,100,100],'Curvature',[0,0],'LineWidth',2,'LineStyle','-')

    end

end

% 取第 1,2 个点画连接线

a1 = a(1); b1 = b(1);

a2 = a(2); b2 = b(2);

hold on

plot(a1,b1,'ro');

plot(a2,b2,'ro');

line([a1 a2],[b1 b2],'color','r');

Randomize

a = Int(4 Rnd + 1)

Delay a 1000

Select Case a

Case 1: MoveTo 1449,683

Case 2: MoveTo 1614,689

Case 3: MoveTo 1776,678

Case 4: MoveTo 1538,671

End Select

LeftClick 1

以上就是关于matlab课堂作业关于随机点的一些问题全部的内容,包括:matlab课堂作业关于随机点的一些问题、c语言 随机点名、随机点名程序中学生的信息是否适合保存在链表中,为什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9860766.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存