Matlabwilliam hill官网
直播中

纯粹

13年用户 41经验值
私信 关注
[问答]

关于权重随机取数

一个矩阵,其中的数的范围是:0-4
随机取一个数,取这个数的概率与元素值正比
即为 P=(元素大小)/(矩阵中元素之和)
实际上取出的数都是不为0的。

应该怎么做呢?
多谢各位大侠!

回帖(17)

赵辉

2012-3-29 10:08:03
本帖最后由 程序诗人 于 2012-3-29 10:08 编辑
  1. x=4*rand^0.5
求密度函数,然后是分布函数,再取反函数。我上面就是这样的算出来,不知道结果对不!
举报

胡秋阳

2012-3-29 10:09:11
A=4*rand(m,n);%生成一个m行n列的矩阵,其元素是0-4之间的随机数
S=sum(sum(A));%对矩阵A的元素进行求和
p_i,j=a_ij/S;%计算概率
我是这么理解的 不知道对不对
举报

爱吃果冻

2012-3-29 10:09:48
clear,clc
Mat = 4*rand(5); %传说中的矩阵
v = Mat(:).';
r = randsrc(1,1,[v;v/sum(v)]);%被取出来的随机数
举报

纯粹

2012-3-29 10:10:24
引用: 爱吃果冻 发表于 2012-3-29 10:09
clear,clc
Mat = 4*rand(5); %传说中的矩阵
v = Mat(:).';

多谢!那如果不仅是取出这个元素,还要取出它的坐标要怎么办呢?多谢!
PS: 那个其中0-4的矩阵是已知的。比如已知是a=[0,1;2,3]
举报

纯粹

2012-3-29 10:11:28
引用: kevinvind 发表于 2012-3-29 10:09
A=4*rand(m,n);%生成一个m行n列的矩阵,其元素是0-4之间的随机数
S=sum(sum(A));%对矩阵A的元素进行求和
p_ ...

多谢!那如果不仅是取出这个元素,还要取出它的坐标要怎么办呢?多谢!
PS: 那个其中0-4的矩阵是已知的。比如已知是a=[0,1;2,3]
举报

爱吃果冻

2012-3-29 10:13:25
引用: 纯粹 发表于 2012-3-29 10:10
多谢!那如果不仅是取出这个元素,还要取出它的坐标要怎么办呢?多谢!
PS: 那个其中0-4的矩阵是已知 ...

坐标find一下不行么?
举报

纯粹

2012-3-29 10:14:26
望大侠明示.
因为实际上是一个很大的矩阵,所以同一个元素值在不同的位置出现了很多次
举报

爱吃果冻

2012-3-29 10:15:22
clear,clc
Mat = [0,1;2,3];
v = Mat(:).';
r = randsrc(1,1,[v;v/sum(v)]);%被取出来的随机数
[i,j] = find(Mat==r);
如果只想获得一个位置,那么再对位置随机取一个
id = randi(length(i));
i = i(id);  %行位置
j = j(id);  %列位置
举报

纯粹

2012-3-29 10:16:14
引用: 爱吃果冻 发表于 2012-3-29 10:15
clear,clc
Mat = [0,1;2,3];
v = Mat(:).';

好的,太牛了,多谢你啊!
举报

赵辉

2012-3-29 10:21:44
我的方法应该是对的啊!
举报

纯粹

2012-3-29 10:22:28
引用: 程序诗人 发表于 2012-3-29 10:21
我的方法应该是对的啊!

是啊。。。是因为我们专业用MATLAB不多,都是用到现翻书。。。所以很多我不太懂。。比如求密度函数什么。。。。。我比较菜。。。
举报

赵辉

2012-3-29 10:23:46
用的我的结果就可以了啊,我只是告诉你我怎么求的!
举报

赵辉

2012-3-29 10:30:11
完整的格式:
t=4*rand(m,n).^0.5;
注意括弧后面那个点
m,n为行与列
举报

爱吃果冻

2012-3-29 10:31:20
引用: 程序诗人 发表于 2012-3-29 10:30
完整的格式:
t=4*rand(m,n).^0.5;
注意括弧后面那个点

你大概理解错LZ的意思了
举报

赵辉

2012-3-29 10:32:41
引用: 爱吃果冻 发表于 2012-3-29 10:31
你大概理解错LZ的意思了

可能我错了!我理解成在一个分布里抽样了
举报

胡秋阳

2012-3-29 10:37:45
引用: 爱吃果冻 发表于 2012-3-29 10:31
你大概理解错LZ的意思了

同学我想请教一下,randi是什么指令,我help了一下,没搜出来。
举报

爱吃果冻

2012-3-29 10:38:35
引用: kevinvind 发表于 2012-3-29 10:37
同学我想请教一下,randi是什么指令,我help了一下,没搜出来。

新版本的函数
老版本里边是randint
举报

更多回帖

发帖
×
20
完善资料,
赚取积分