24小时热门版块排行榜    

查看: 2003  |  回复: 8

ice_huya

金虫 (小有名气)

[求助] Matlab 按概率生成随机数的一个小问题 已有2人参与

问题如下:

已知A=[6 5 4 3 2 1], 各元素值对应的概率为P=[0.0049 0.0978 0.1559 0.2220 0.2617 0.1468]
想要生成n个(比如,n=100)服从上述概率的随机数。

通常的办法是用rand函数,但我的问题是,各个值的概率加起来并不是等于1,且概率并没有单调递增或递减,,而rand随机产生的是0~1之间的数,所以想请教大家,该怎么做?

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

ice_huya

金虫 (小有名气)

好像知道了 是用r=a+(b-a)*rand 吗?

还有一个问题,这样生产的随机数,是大致符合给定的概率的分布,而不是严格服从概率吧?每一次重新生成就会变

那是不是越多越准确些呢?比如生产1000个比100个更符合概率分布?
2楼2016-11-18 04:30:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mygt_hit

专家顾问 (职业作家)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
ice_huya: 金币+10, 有帮助, 非常感谢回复!有启发!! 2016-11-18 22:31:43
这属于生成离散分布随机数的问题。不知道MATLAB是否有直接生成离散分布随机数的函数,但有一个变通的办法,将[0,1]区间划分为[0.0049 0.0978 0.1559 0.2220 0.2617 0.1468] 6个区间。用MATLAB生成【0,1】上的均匀随机数,落在哪个区间,就取哪个区间对应的整数(即[6,5,4,3,2,1]其中之一)。

第二个问题:MATLAB生成的是伪随机数,不过一般使用足够了。生成的随机样本越多,对概率分布的描述越好,或者说样本分布更加接近总体分布。
知其然,知其所以然。
3楼2016-11-18 14:54:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ChuYanWu

金虫 (正式写手)

function Ans = superRand
p = [0.0049 0.0978 0.1559 0.222 0.2617 0.1468];
pz = sum( p );
Num = round( 1000000*p./pz );
Top = sum( Num );
div = cumsum(Num);
Case = randi( Top );
n = find( sign( Case - div )== -1 );
Ans = n(1);

发自小木虫Android客户端
4楼2016-11-19 02:46:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ChuYanWu

金虫 (正式写手)

clear;clc
p = zeros(1,100000);
for i = 1:100000
    p(i) = superRand;
end
sum( p==1 )/length(p)

发自小木虫Android客户端
5楼2016-11-19 02:46:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ChuYanWu

金虫 (正式写手)

引用回帖:
4楼: Originally posted by ChuYanWu at 2016-11-19 02:46:15
function Ans = superRand
p = ;
pz = sum( p );
Num = round( 1000000*p./pz );
Top = sum( Num );
div = cumsum(Num);
Case = randi( Top );
n = find( sign( Case - div )== -1 );
Ans = n(1);
...

按概率产生随机数

发自小木虫Android客户端
6楼2016-11-19 02:46:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ChuYanWu

金虫 (正式写手)

引用回帖:
5楼: Originally posted by ChuYanWu at 2016-11-19 02:46:33
clear;clc
p = zeros(1,100000);
for i = 1:100000
    p(i) = superRand;
end
sum( p==1 )/length(p)

验证

发自小木虫Android客户端
7楼2016-11-19 02:47:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ice_huya

金虫 (小有名气)

引用回帖:
7楼: Originally posted by ChuYanWu at 2016-11-19 02:47:02
验证
...

非常感谢!虽然我还没完全搞懂,我会花时间再研究一下你的方法,谢谢!!!!

再回个贴应助一下呗? 想给你发金币表示感谢呢呀
8楼2016-11-19 23:30:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小圆盾

铜虫 (小有名气)

【答案】应助回帖

A = [6 5 4 3 2 1];
P = [0.0049 0.0978 0.1559 0.2220 0.2617 0.1468];
[p, I] = sort(P, 'ascend');
m = length(I);
B = A;
for i = 1:m
    A(i) = B(I(i));
end
n = 100;
p = p./sum(p);
for i = 1:n
r = rand;
if r < p(1)
x(i) = A(1);
elseif r < p(2)
x(i) = A(2);
elseif r < p(3)
x(i) = A(3);
elseif r < p(4)
x(i) = A(4);
elseif r < p(5)
x(i) = A(5);
else
x(i) = A(6);
end
end
x
9楼2016-12-19 10:47:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 ice_huya 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[博后之家] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +3 j5mmowWXNWxv 2026-09-05 6/300 2026-09-06 18:41 by eObJPa4gWmp6
[硕博家园] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +4 jPDp0sc2B7zQ 2026-09-05 6/300 2026-09-06 18:21 by eObJPa4gWmp6
[公派出国] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 jPDp0sc2B7zQ 2026-09-05 4/200 2026-09-06 18:09 by eObJPa4gWmp6
[找工作] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 jPDp0sc2B7zQ 2026-09-05 8/400 2026-09-06 17:49 by eObJPa4gWmp6
[教师之家] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 jPDp0sc2B7zQ 2026-09-05 9/450 2026-09-06 17:09 by eObJPa4gWmp6
[考研] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 jPDp0sc2B7zQ 2026-09-04 8/400 2026-09-06 17:09 by eObJPa4gWmp6
[博后之家] 广西大学-广州大学招聘博士后 欢迎广大优秀人才!!! +5 SCSIOyxguo 2026-09-03 8/400 2026-09-06 15:06 by 可爱小花朵
[教师之家] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 j5mmowWXNWxv 2026-09-05 3/150 2026-09-06 13:09 by eObJPa4gWmp6
[考博] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 j5mmowWXNWxv 2026-09-05 4/200 2026-09-06 12:49 by eObJPa4gWmp6
[基金申请] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 j5mmowWXNWxv 2026-09-05 3/150 2026-09-06 12:49 by eObJPa4gWmp6
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 jPDp0sc2B7zQ 2026-09-05 8/400 2026-09-06 11:09 by eObJPa4gWmp6
[论文投稿] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 jPDp0sc2B7zQ 2026-09-04 8/400 2026-09-06 11:00 by eObJPa4gWmp6
[考研] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 jPDp0sc2B7zQ 2026-09-05 4/200 2026-09-06 07:20 by E1iiBLMU2XnD
[论文投稿] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +6 7ZYIEW2YWn72 2026-09-04 9/450 2026-09-06 06:00 by E1iiBLMU2XnD
[教师之家] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +8 CRJ0Aq2FtVH0 2026-09-03 15/750 2026-09-06 05:48 by E1iiBLMU2XnD
[基金申请] 面上没中,邀请各位路过的虫友分析一下分数 +12 jackleilei 2026-09-03 13/650 2026-09-05 18:10 by fireguard
[文学芳草园] 初秋的晨风 +4 阿美_Lml888 2026-09-04 6/300 2026-09-05 13:51 by 阿美_Lml888
[硕博家园] Ei源刊怎么投 +4 Fengshun9711 2026-09-04 4/200 2026-09-04 19:30 by 研途知予
[硕博家园] 哈尔滨工业大学韩晓军教授课题组招收2027年硕士推免生及博士研究生 +3 灯灯灯灯DDDD 2026-09-03 3/150 2026-09-03 21:22 by 科研皮皮猪
[基金申请] 要骂人了,新模版改版就是要淡化问题凝练这种虚的东西,结果有个评委还在说凝练得不够 +9 瞬息宇宙 2026-08-31 17/850 2026-09-02 14:04 by anjeeshine
信息提示
请填处理意见