如何在闭区间生成随机数
发布网友
发布时间:2023-08-21 07:44
我来回答
共1个回答
热心网友
时间:2024-11-01 18:43
根据概率分布相关理论,任何连续分布的随机变量取某一特定值的概率为0。所以闭区间上连续分布的随机数和相应开区间上的连续分布的随机数在实际应用中无差异。
当然计算机不可能产生真正连续随机变量,浮点数精度大概在2^-52(具体数字记不清楚了,MATLAB中就是eps的值),因此(0,1)区间上连续随机变量相当于{eps,2*eps,...(1/eps)*eps}这个大约含有1/eps个元素的有限集上的离散均匀分布。也就是说,虽然理论上任何连续分布的随机变量取某一特定值的概率为0,但是由于计算机不能绝对连续的表示实数,因此实际中生成给定的(0,1)之间的浮点数的概率为eps,10^-16数量级。楼主加上0和1后平均大约要试验5×10^15次才能出现一个0或者1,有必要这样做吗
在MATLAB中的(0,1)区间上连续随机变量相当于{eps,2*eps,...(1/eps)*eps}这个大约含有1/eps个元素的有限集上的离散均匀分布,连续型的确实没有必要考虑一个点的概率,但是如果是离散的话就该考虑吧!
再谈一下其他的情况,如我要取10个10到11之间的随机数,用这个命令 round(10*rand(1,10)) ,是不是就有可能取到10和11这两个值呢!当然,是取的整数,如果是小数肯定不能用的!