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

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

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

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

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

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

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

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

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


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

SublimeText3 Linux new version
SublimeText3 Linux latest version

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
Useful JavaScript development tools

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft
