Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 根据范围随机选择数字和乘法器的算法_Algorithm_Math - Fatal编程技术网

Algorithm 根据范围随机选择数字和乘法器的算法

Algorithm 根据范围随机选择数字和乘法器的算法,algorithm,math,Algorithm,Math,我有3个数组(值可能不同) 我需要一种算法,可以使用$numbers和$multipliers中的随机元素随机获取$range内的值。 例如,它随机使用​​2从$numbers和$multipliers中的3得到了介于$range值之间的2*3=6简单的解决方案是从$numbers中选择x,从$multipliers中选择y,计算z=x*y,如果它在范围内,则返回它。如果没有,只需重新开始。此解决方案可能运行很长时间,具体取决于数量和范围。一个可能的改进是为数字中的每个元素预计算乘法器中的哪个值

我有3个数组(值可能不同)

我需要一种算法,可以使用
$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];