小智 9
好吧,如果我能在一个区间内生成偶然的随机数,那么我只需要添加1. :)
这并不像听起来那么愚蠢.
你能生成随机整数吗?如果可以的话,为什么不乘以2呢?然后你会有偶然的整数.请参阅上文,了解下一步该做什么.
MATLAB中有一些工具可以在一个区间内生成随机整数.如果没有,那么你可以写得足够琐碎.例如,这是做什么的:
r = 1 + 2*floor(rand(N,1)*50);
Run Code Online (Sandbox Code Playgroud)
或这个:
r = 1 + 2*randi([0 49], N,1);
Run Code Online (Sandbox Code Playgroud)
请注意,Rody编辑了这个答案,但是在使用randi时这样做是错误的.我已经纠正了这个问题.请注意,randi在其采样中故意上升到只有49,因为我已经改变了它.这是因为2*49 + 1 = 99.
那么兰德案件怎么样?为什么我在那里乘以50而不是49?这取自rand的doc:
"r = rand(n)返回一个n×n矩阵,其中包含从开放区间(0,1)上的标准均匀分布中提取的伪随机值."
所以rand NEVER生成一个精确的1.它可以生成一个略小于1的数字,但是从不生成1.所以当我乘以50时,这会得到一个数字,它永远不会精确为50,但只能略低于50.然后生成0到49之间的所有整数,概率基本相等.我想有人会指出,因为0永远不是rand的可能结果,所以整数0将被这个表达式对eps的数量进行欠采样.如果您将生成那么多样本,您可以看到这种范围的欠采样,那么您将需要一台更大,更快的计算机来完成您的工作.:)