【发布时间】:2015-08-12 17:03:27
【问题描述】:
我需要在给定的间隔上生成给定长度的随机数序列,并限制两个数字之间的距离不得在一定范围内。生成数字的间隔将大于序列的长度乘以最小距离,但不会大很多,因此某些数字可能会不符合条件。
这可能是微不足道的,但我真的想不出一个好的解决这个问题的方法,除了生成随机序列,然后迭代它来检查每一对是否满足条件,如果不满足,替换它们并再检查一遍。似乎太长了,因为不能保证新生成的数字会满足条件,而且迭代本身可能需要相当长的时间。
谁能想到更好的解决方案?
【问题讨论】:
-
数字可以位于区间的任何位置有多重要?您可以生成随机整数并将它们乘以最小距离。
-
可能有一些方法可以生成这些值,这些值不会从满足约束的所有可能分布中均匀采样。这可以接受吗?另外,你能清楚你是在生成整数还是实数(大概是双精度近似)还是其他一些数字类型?
-
数字的来源分布是否有限制?
-
另外,如果您能告诉我们您需要这些数字做什么,将会很有帮助。
-
如果你的间隔大于长度 x 最小距离,但“不是很多”,那么它不会是真正随机的,是吗?
标签: matlab