目录
回复讨论(解决方案)
首页 后端开发 php教程 根据人数随机分配百分比的问题

根据人数随机分配百分比的问题

Jun 23, 2016 pm 01:50 PM
人数 分配 百分比 随机

需求是这样的,根据可变参数 $people 来给每个人随机分配百分比,条件是人数一定会控制在 3 
写了个简单的分配,但会出现最后一个人会得到很多的情况,并且由于分配区间实际上是 1 - 平均数 之间的百分比,不是严格意义上的 “随机平均分配”,求各位大大给个思路,抛砖引玉,不甚感谢。

$people = 3;     //人数        $percent = 100;   //百分比        $average = floor($percent/$people);        $rand_array = array();        $count = 0;        for ($i=0; $i < $n; $i++) {            if($i == ($n - 1)){                $rand_array[$i] = 100 - $count;            }else{                $rand_array[$i] = rand(1,$average);                $count = $count + $rand_array[$i];             }        }        return $rand_array;
登录后复制


回复讨论(解决方案)

这样可能好点

$people = 3;    //人数$percent = 100; //百分比$res = array_fill(0, 3, floor($percent/$people)); //平均分配$d = 5; //容差foreach($res as &$v) $v += rand(-$d, $d);$res[rand(0, $people-1)] += $percent - array_sum($res); //随机将残差补入print_r($res);
登录后复制

忘记上来结贴了,感谢版主大大的回复,问题已经解决了,贴出来与大家分享:

public static function rand_bouns($person){		//百分比		$percent = 100;		$now_person = $person;		$bouns = array();		for($i=0;$i<=$person-1;$i++){			$bouns[$i] = self::get_bouns($now_person,$percent);			$percent = $percent - $bouns[$i];			$now_person = $now_person - 1;			$now_bouns += $bouns[$i];		}		return $bouns;			}public static function get_bouns($person,$percent){		if($person==1) return $percent;		$max = 30;		if($percent < $max)  $max = $percent;		$min = $percent-$max*($person-1) <= 0 ? 1 : $percent-$max*($person-1);		$max = $max-($person) <= 0 ? 1 : $max-($person);		return rand($min,$max);	}
登录后复制

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

JavaScript中生成随机数字和字符串 JavaScript中生成随机数字和字符串 Sep 02, 2023 am 08:57 AM

JavaScript中生成随机数字和字符串

如何在Python中将分数转换为百分比? 如何在Python中将分数转换为百分比? Aug 25, 2023 pm 01:25 PM

如何在Python中将分数转换为百分比?

随机和伪随机的区别 随机和伪随机的区别 Oct 10, 2023 am 09:27 AM

随机和伪随机的区别

Python程序获取单词频率的百分比 Python程序获取单词频率的百分比 Sep 08, 2023 pm 06:29 PM

Python程序获取单词频率的百分比

Python 2.x 中如何使用random.randint()函数生成随机整数 Python 2.x 中如何使用random.randint()函数生成随机整数 Jul 31, 2023 pm 12:13 PM

Python 2.x 中如何使用random.randint()函数生成随机整数

腾讯会议摄像头上限多少人 腾讯会议摄像头上限多少人 Feb 28, 2024 pm 05:55 PM

腾讯会议摄像头上限多少人

五分之一的 PC 现在安装了 Windows 11,但采用率似乎正在放缓 五分之一的 PC 现在安装了 Windows 11,但采用率似乎正在放缓 Apr 30, 2023 pm 05:10 PM

五分之一的 PC 现在安装了 Windows 11,但采用率似乎正在放缓

解决PHP报错:尝试分配非变量的结果到连接点 解决PHP报错:尝试分配非变量的结果到连接点 Aug 18, 2023 pm 01:13 PM

解决PHP报错:尝试分配非变量的结果到连接点

See all articles