如何在 MATLAB 中生成已知概率的随机向量 (0,1)
我使用以下代码
operation=[rand(1,noOfNodes)>prob];
生成 1 和零(noOfNodes
次)。如果我使用 prob=0.2 并尝试 100 个值,则在某些情况下会存在 40 个零。是不是很奇怪?
我需要得到小于 0.2 的零的概率
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,这并不奇怪。这对你来说是概率。
如果你抛硬币 100 次,你并不总是得到 50 次正面和 50 次反面。有时你会得到 49 和 51,在极少数情况下,你甚至可能得到 100 次相同的结果。
使用上面的代码,当
noOfNodes
为 100 时,不能保证始终获得 20 个零和 80 个 1。如果您想生成一个始终具有 20% 零的向量,但是通过零和一的随机排序,那么您可以使用函数RANDPERM 像这样:如果你想生成一个从 0% 开始的向量到 20% 零,您可以使用函数 RANDI 修改上面的代码:
No, that's not weird. That's probability for ya.
If you flip a coin 100 times, you don't always get 50 heads and 50 tails. Sometimes you get 49 and 51, and on that rarest of occasions you can even get the same one 100 times.
With your above code you're not guaranteed to always get 20 zeroes and 80 ones when
noOfNodes
is 100. If you want to generate a vector that always has 20% zeroes, but with a random ordering of zeroes and ones, then you can accomplish this using the function RANDPERM like so:If you want to generate a vector that has anywhere from 0% to 20% zeroes, you can modify the code above using the function RANDI: