我是靠谱客的博主 专一蓝天,最近开发中收集的这篇文章主要介绍matlab 加随机数,添加到100的随机数:Matlab,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我经常看到错误,建议用一个给定的和生成随机数,一个只是使用一个统一的随机集,只是缩放它们。但是,如果你这样做,结果是真的均匀随机吗?

尝试这个简单的测试在二维。生成一个巨大的随机样本,然后缩放它们总和为1.我将使用bsxfun做缩放。

xy = rand(10000000,2);

xy = bsxfun(@times,xy,1./sum(xy,2));

hist(xy(:,1),100)

如果它们是真正均匀随机的,则x坐标将是均匀的,如同y坐标。任何值都将同样可能发生。实际上,对于两个点求和为1,它们必须沿着连接(x,y)平面中的两个点(0,1),(1,0)的线。为了使点均匀,沿着该线的任何点必须同样可能。

当我使用缩放解决方案时,显然均匀性失败。该行上的任何点不是同样可能的。我们可以看到在3维中发生的同样的事情。看到这里的3-d图中,三角形区域中心的点更密集地包装。这是不均匀性的反映。

xyz = rand(10000,3);

xyz = bsxfun(@times,xyz,1./sum(xyz,2));

plot3(xyz(:,1),xyz(:,2),xyz(:,3),'.')

view(70,35)

box on

grid on

同样,简单的缩放解决方案失败。它不会在感兴趣的领域产生真正统一的结果。

我们能做得更好吗?嗯,是。 2-d中的简单解是生成指定沿着连接点(0,1)和1,0的线的距离的单个随机数。

t = rand(10000000,1);

xy = t*[0 1] + (1-t)*[1 0];

hist(xy(:,1),100)

可以示出,在单位平方中,由等式x y = 1限定的线上的任何点现在同样可能已被选择。这通过好的,平直的直方图来反映。

David Schwartz建议的排序方法是否在n维中工作?显然,它在2-d中这样做,下图表明它在3维中这样做。没有深入的思考,我相信它将工作在这个基本的情况下,在n维。

n = 10000;

uv = [zeros(n,1),sort(rand(n,2),2),ones(n,1)];

xyz = diff(uv,[],2);

plot3(xyz(:,1),xyz(:,2),xyz(:,3),'.')

box on

grid on

view(70,35)

还可以从文件交换,Roger Stafford的贡献下载功能randfixedsum。这是一个更通用的解决方案,在单位超立方体中生成真正均匀的随机集,具有任何给定的固定和。因此,为了生成位于单位3立方体中的点的随机集合,受约束它们总和为1.25 …

xyz = randfixedsum(3,10000,1.25,0,1)';

plot3(xyz(:,1),xyz(:,2),xyz(:,3),'.')

view(70,35)

box on

grid on

最后

以上就是专一蓝天为你收集整理的matlab 加随机数,添加到100的随机数:Matlab的全部内容,希望文章能够帮你解决matlab 加随机数,添加到100的随机数:Matlab所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部