Algorithm 根据范围随机选择数字和乘法器的算法
我有3个数组(值可能不同) 我需要一种算法,可以使用Algorithm 根据范围随机选择数字和乘法器的算法,algorithm,math,Algorithm,Math,我有3个数组(值可能不同) 我需要一种算法,可以使用$numbers和$multipliers中的随机元素随机获取$range内的值。 例如,它随机使用2从$numbers和$multipliers中的3得到了介于$range值之间的2*3=6简单的解决方案是从$numbers中选择x,从$multipliers中选择y,计算z=x*y,如果它在范围内,则返回它。如果没有,只需重新开始。此解决方案可能运行很长时间,具体取决于数量和范围。一个可能的改进是为数字中的每个元素预计算乘法器中的哪个值
$numbers
和$multipliers
中的随机元素随机获取$range
内的值。
例如,它随机使用
2
从$numbers
和$multipliers
中的3
得到了介于$range
值之间的2*3=6简单的解决方案是从$numbers
中选择x
,从$multipliers
中选择y
,计算z=x*y
,如果它在范围内,则返回它。如果没有,只需重新开始。此解决方案可能运行很长时间,具体取决于数量和范围。一个可能的改进是为数字
中的每个元素预计算乘法器
中的哪个值范围是范围
内的有效候选值。如果在O(n logn)
中对数组进行排序,则可以使用第二个数组上的二进制搜索(查找第一个数组中每个元素的上限和下限)来计算每个数字的有效范围。这仍然会给您一个时间O(nlogn)
。然后简单地从第一个数组中随机均匀地选取一个元素,从第二个数组中随机均匀地选取一个元素,然后相乘并返回
$numbers = [1, 2, 5, 6, 10, 15];
$multipliers = [1, 2, 3];
$range = [0, 10];