php关于数组n个随机数分成x组,使每组值相近的算法

简介: php关于数组n个随机数分成x组,使每组值相近的算法

主要原理是,将数组从大到小排序,数组1先取数取第一个,数组2第2取第2个,以此类推


取完第一次数组之后,判断下数组1,数组2,进行一次排序,将数据最大的排前面(理论上来说,数组1数据最大,因为从大到小排序)


当数组1是最大时,让数组1取倒数第一个值(最小值),数组2取倒数第2个值,以此类推


这时候,数组1取得是最小,数组2取的是第二小,会让总数开始慢慢的接近,以此类推


下面是一个n个数字分2组的实例代码,分x组的可以自己写咯

<?php

 

functiongroup_arr($arr_count$max_num)

{

    $arrarray();

    for($i= 0; $i$arr_count$i++) {

        $arr[] = mt_rand(0, $max_num);

    }

    rsort($arr);

//var_dump($arr);

//从大到小排序一下

    $totalarray_sum($arr);

//var_dump($total);

    $arr1     array();

    $arr2     array();

    $arr1_sum= 0;

    $arr2_sum= 0;

    $mean     $total/ 2;//平均数

    $arr_arr$arr;

    for($i= 0; $i$arr_count/ 2; $i++) {

//        var_dump($arr_arr);

        if($arr1_sum$arr2_sum) {

            $arr1_sum+= $arr1[] = $arr_arr[count($arr_arr)-1];

            array_splice($arr_arr,-1,1);//数组删除元素重排

            $arr2_sum+= $arr2[] = $arr_arr[count($arr_arr)-1];

            array_splice($arr_arr,-1,1);//数组重排

        else{

            $arr1_sum+= $arr1[] = $arr_arr[0];

            array_splice($arr_arr,0,1);//数组重排

            $arr2_sum+= $arr2[] = $arr_arr[0];

            array_splice($arr_arr,0,1);//数组重排

        }

    }

    echo'<br>数组:'. json_encode($arr);

    echo'<br>总数:'array_sum($arr);

    echo'<br>arr1数组:'. json_encode($arr1);

    echo'<br>arr1:'array_sum($arr1);

    echo'<br>arr2数组:'. json_encode($arr2);

    echo'<br>arr2:'array_sum($arr2);

    echo'<br>arr总数:'.( array_sum($arr1)+array_sum($arr2));

 

}

 

group_arr(10, 100);

注意,这个算法思路取到的不一定是最接近的值,只能说是相对接近并且数字越多精度越高,以下是10个100随机数分2组的测试图

image.png

image.png

image.png

image.png

目录
相关文章
|
17天前
|
存储 算法 安全
控制局域网电脑上网的 PHP 哈希表 IP 黑名单过滤算法
本文设计基于哈希表的IP黑名单过滤算法,利用O(1)快速查找特性,实现局域网电脑上网的高效管控。通过PHP关联数组构建黑名单,支持实时拦截、动态增删与自动过期清理,适用于50-500台终端场景,显著降低网络延迟,提升管控灵活性与响应速度。
56 8
|
4月前
|
PHP C++ 索引
PHP 高效之道:字符串与数组处理的实用技巧
PHP 高效之道:字符串与数组处理的实用技巧
205 83
|
29天前
|
存储 监控 算法
基于 PHP 布隆过滤器的局域网监控管理工具异常行为检测算法研究
布隆过滤器以其高效的空间利用率和毫秒级查询性能,为局域网监控管理工具提供轻量化异常设备检测方案。相比传统数据库,显著降低延迟与资源消耗,适配边缘设备部署需求,提升网络安全实时防护能力。(238字)
117 0
|
5月前
|
JSON 数据处理 PHP
PHP数组处理技巧:高效操作数据集合
PHP数组处理技巧:高效操作数据集合
|
5月前
|
JSON 安全 大数据
PHP中的数组处理艺术:灵活高效的数据操作
PHP中的数组处理艺术:灵活高效的数据操作
|
5月前
|
大数据 数据处理 PHP
PHP中的数组过滤与映射:高效数据处理技巧
PHP中的数组过滤与映射:高效数据处理技巧
|
4月前
|
存储 JSON PHP
PHP数组键值转换的隐秘陷阱:整数还是字符串?
PHP数组键值转换的隐秘陷阱:整数还是字符串?
168 58
|
4月前
|
PHP 开发者 索引
探究PHP中常见数组操作函数
在编码实践中,合理利用这些数组操作函数可以简化编程工作,提升代码的效率和可读性。为达到最佳实践,开发者应该通过阅读官方文档来深入理解每个函数的工作原理以及如何在不同的场景下运用它们。
141 8
|
4月前
|
测试技术 PHP 开发者
PHP 数组查找:为什么 `isset()` 比 `in_array()` 快得多?
PHP 数组查找:为什么 `isset()` 比 `in_array()` 快得多?
|
5月前
|
运维 监控 算法
局域网屏幕监控软件 PHP 图像块增量传输算法解析
本文探讨了一种基于PHP语言开发的图像块增量传输算法,适用于局域网屏幕监控场景。通过将屏幕图像分块处理、计算哈希值并对比变化区域,该算法显著降低了网络带宽占用,提升了监控效率。在企业管理和远程教育中,该技术可实现终端设备的实时监控与远程管控,同时支持与生物识别等技术融合,拓展应用范围。实验表明,该算法在常规办公场景下可减少90%以上的数据传输量,展现了良好的实时性和优化效果。
84 3