假设我有一个包含以下值的数组:
0.7523262
0.9232192
1.5824928
5.2362123
从这个数组中随机选择一个值的最佳方法是什么,以便值越高,选择它的可能性越大?有一些常用函数可以进行加权选择,但是它们都使用mt_rand(),这对于类似的东西不起作用。
例如,值为2.4652474的可能性是1.2326237的两倍。
答案 0 :(得分:1)
我不知道这是否是最好的方法,但你可以通过计算数组中所有条目的总和,将其乘以0到1之间的随机数来得到目标,然后计算数组中所有条目的运行总计,直到该总数超过目标。返回超出目标的条目。
答案 1 :(得分:1)
计算0
与整个数组之和的随机数。
对数组进行排序,以便首先使用较低的数字。
从左侧开始总结数组。当总和高于随机数时,您可以选择已达到的指数。
如果你是有
Array = [1, 1.5, 2, 2.5]
Sum of Array = 7
Random = 4
我们检查第一个索引。这低于4
,因此我们会添加第二个数字1 + 1.5 = 2.5
,而不是4
,因此我们添加了另一个数字2.5 + 2 = 4.5
,高于4
所以我们选择第三个指数。