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

目录
相关文章
|
2月前
|
存储 数据处理 PHP
深入浅出PHP编程之数组操作技巧
【10月更文挑战第30天】在PHP编程的海洋里,数组是一艘承载着数据结构的小船,掌握其操控之道,能让开发者在编码的旅程中乘风破浪。本文将带你领略数组的强大功能,从基础使用到高级应用,一步步揭开数组操作的神秘面纱。准备好你的航海装备,让我们启航吧!
45 4
|
3月前
|
算法
Leetcode 初级算法 --- 数组篇
Leetcode 初级算法 --- 数组篇
49 0
|
2月前
|
存储 缓存 搜索推荐
优化PHP数组性能
优化PHP数组性能
46 8
|
2月前
|
算法 搜索推荐 Java
05 一文解决PHP数组操作
路老师带你深入PHP世界,从数组的基础知识讲起,包括数组的创建、赋值、类型(数字索引数组与关联数组)、多维数组,以及常用数组函数如遍历、统计、查询、添加、删除重复元素和排序等。实例讲解,轻松上手。下期预告:PHP面向对象。
26 2
|
3月前
|
算法 程序员 索引
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
栈的基本概念、应用场景以及如何使用数组和单链表模拟栈,并展示了如何利用栈和中缀表达式实现一个综合计算器。
55 1
数据结构与算法学习七:栈、数组模拟栈、单链表模拟栈、栈应用实例 实现 综合计算器
|
4月前
|
存储 API PHP
php学习笔记-php数组的创建和使用,数组常用函数-day03
关于PHP数组的创建、使用以及常用函数的详细学习笔记。
php学习笔记-php数组的创建和使用,数组常用函数-day03
|
3月前
|
存储 算法 定位技术
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
这篇文章主要介绍了稀疏数组和队列的概念、应用实例以及如何使用数组模拟队列和环形队列的实现方法。
31 0
数据结构与算法学习二、稀疏数组与队列,数组模拟队列,模拟环形队列
|
4月前
|
存储 PHP
PHP编程中的数组操作技巧
【9月更文挑战第28天】在PHP编程中,数组是一种基础且强大的数据结构,它可以存储多个值,并且允许我们使用键来访问这些值。本文将介绍一些实用的PHP数组操作技巧,包括创建数组、遍历数组、排序数组和合并数组等。通过掌握这些技巧,你将能够更高效地处理数据和解决实际问题。
|
4月前
|
存储 数据处理 PHP
深入理解PHP中的数组
【9月更文挑战第3天】在PHP编程中,数组扮演着不可或缺的角色。它们不仅提供了一种灵活的方式来存储和操作数据,还极大地丰富了开发者处理复杂信息结构的能力。本文将带你深入了解PHP数组的基础知识、高级特性以及如何高效地利用数组来简化代码逻辑,提升开发效率。
|
5月前
|
安全 PHP 开发者
PHP中的数组操作技巧
【8月更文挑战第29天】在PHP编程中,数组是一个基本且强大的数据结构。本文将通过浅显易懂的语言和生动的比喻,带你深入理解PHP数组的操作技巧。我们将一起探讨如何高效地使用数组函数,以及如何通过这些技巧来优化你的代码。无论你是PHP初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的信息。让我们一起探索数组的世界,发现它的无限可能!