search
HomeBackend DevelopmentPHP Tutorial根据人数随机分配百分比的问题
根据人数随机分配百分比的问题Jun 23, 2016 pm 01:50 PM
Number of peopledistributepercentagerandom

需求是这样的,根据可变参数 $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);	}

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
JavaScript中生成随机数字和字符串JavaScript中生成随机数字和字符串Sep 02, 2023 am 08:57 AM

生成随机数或字母数字字符串的能力在许多情况下都会派上用场。您可以使用它在游戏中的不同位置生成敌人或食物。您还可以使用它向用户建议随机密码或创建文件名来保存文件。我写了一篇关于如何在PHP中生成随机字母数字字符串的教程。我在这篇文章的开头说,几乎没有事件是真正随机的,同样的情况也适用于随机数或字符串生成。在本教程中,我将向您展示如何在JavaScript中生成伪随机字母数字字符串。在JavaScript中生成随机数让我们从生成随机数开始。我想到的第一个方法是Math.random(),它返回一个浮

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

分数和百分比是在金融、数据分析和统计等各个领域中使用的两个基本数学概念。将分数转换为百分比是一种简单但必要的操作,它使我们能够以更易理解的方式表示分数值。Python是最流行的编程语言之一,提供了几种将分数转换为百分比的方法,理解这些方法对于在Python中处理数据的人来说至关重要。本文深入探讨了在Python中将分数转换为百分比的过程。我们将探索不同的方法来执行此操作,并提供示例以帮助您理解每种方法。无论您是初学者还是经验丰富的Python程序员,本文都为您提供了在Python中执行此关键操作

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

随机和伪随机的区别在可预测性、重现性、均匀性和安全性等。详细介绍:1、可预测性,随机数是无法被预测的,即使知道了过去的结果也不能准确地预测未来的结果,而伪随机数是可以被预测的,因为它们是通过算法生成的,只要知道了算法和种子,就可以重现生成相同的数列或序列;2、重现性,随机数是不可重现的,每次生成的结果都是独立的,而伪随机数是可重现的,只要使用相同的算法和种子等等。

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

在本文中,我们将学习如何在Python中以百分比形式获取词频。假设我们已经获取了一个字符串输入列表。现在,我们将找到给定输入字符串列表中每个单词的百分比。公式(OccurrenceofXword/Totalwords)*100使用的方法使用sum()、Counter()、join()和split()函数使用join()、split()和count()函数使用operator模块的countOf()函数。方法一:使用sum()、Counter()、join()和split()函数join()是Py

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

Python是一种流行的编程语言,广泛应用于数据分析、机器学习、网页开发等领域。在Python中,random模块提供了一个random.randint()函数,用于生成随机整数。本文将介绍如何使用random.randint()函数来生成随机整数,并提供一些代码示例。首先,我们需要导入random模块:importrandom接下来,就可以调用rando

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

在腾讯会议中用户可以打开自己的摄像头进行共享,不过摄像头是有人数上限的,那么摄像头人数上限是多少人呢?下面小编就为大家带来了腾讯会议摄像头上限人数介绍,一起来了解一下吧。腾讯会议使用教程腾讯会议摄像头上限多少人答:最高60人,最低30人。一、摄像头人数上限介绍:1、电脑端最多容纳支持60个人开启摄像头,一个屏幕最多同时容纳9或25人。2、手机端最多容纳支持30个人开启摄像头,一个屏幕最多同时容纳4人。二、视频数量上限提升方法:1、如果参与者过多,最多30个人同时开摄像头。2、我们可以在账号头像界

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

解决PHP报错:尝试分配非变量的结果到连接点在PHP开发中,我们经常会遇到各种各样的报错信息。其中之一是“尝试分配非变量的结果到连接点”(TryingtoAssignNon-VariabletoConcatenate)。这个错误提示表明在连接点运算符(.)中,我们试图连接一个非变量的结果。要解决这个问题,我们需要先理解连接点运算符的作用和使用方式。

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

微软的Windows11继续增长,正如AdDuplex报告中最新的2022年2月数据所显示的那样。该操作系统正在迅速接近20%的数字大关,这意味着大约五分之一的PC现在运行Windows11。Windows11的公共版本,即Windows1121H2,现在为19.3%。与此同时,内部人员飞行各种预览版本的比例现在为0.3%。这使Windows11的总份额达到19.6%,到​​3月,这个百分比份额可能超过20%。Windows11和许多Wind

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Tools

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft