根据人数随机分配百分比的问题
需求是这样的,根据可变参数 $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); }

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Die Möglichkeit, Zufallszahlen oder alphanumerische Zeichenfolgen zu generieren, ist in vielen Situationen praktisch. Sie können damit an verschiedenen Orten im Spiel Feinde oder Nahrung hervorbringen. Sie können es auch verwenden, um Benutzern zufällige Passwörter vorzuschlagen oder Dateinamen zum Speichern von Dateien zu erstellen. Ich habe ein Tutorial darüber geschrieben, wie man in PHP zufällige alphanumerische Zeichenfolgen generiert. Ich habe am Anfang dieses Beitrags gesagt, dass nur wenige Ereignisse wirklich zufällig sind, und das Gleiche gilt für die Zufallszahlen- oder String-Generierung. In diesem Tutorial zeige ich Ihnen, wie Sie in JavaScript eine pseudozufällige alphanumerische Zeichenfolge generieren. Generieren von Zufallszahlen in JavaScript Beginnen wir mit der Generierung von Zufallszahlen. Die erste Methode, die mir in den Sinn kommt, ist Math.random(), die einen Float zurückgibt

Der Unterschied zwischen Zufall und Pseudozufalls liegt in der Vorhersagbarkeit, Reproduzierbarkeit, Einheitlichkeit und Sicherheit. Detaillierte Einführung: 1. Zufallszahlen können nicht vorhergesagt werden, solange Sie den Algorithmus kennen Seed, Sie können dieselbe Sequenz oder Sequenz neu generieren. 2. Reproduzierbarkeit, Zufallszahlen sind nicht reproduzierbar und die generierten Ergebnisse sind jedes Mal unabhängig, während Pseudozufallszahlen reproduzierbar sind. Ja, verwenden Sie einfach denselben Algorithmus und dieselben Seeds usw.

Brüche und Prozentsätze sind zwei grundlegende mathematische Konzepte, die in verschiedenen Bereichen wie Finanzen, Datenanalyse und Statistik verwendet werden. Das Umwandeln eines Bruchs in einen Prozentsatz ist eine einfache, aber notwendige Operation, die es uns ermöglicht, Bruchwerte verständlicher darzustellen. Python, eine der beliebtesten Programmiersprachen, bietet mehrere Methoden zum Umwandeln von Brüchen in Prozente. Das Verständnis dieser Methoden ist für jeden, der in Python mit Daten arbeitet, von entscheidender Bedeutung. Dieser Artikel befasst sich ausführlich mit der Umwandlung von Brüchen in Prozentsätze in Python. Wir werden verschiedene Möglichkeiten hierfür untersuchen und Beispiele bereitstellen, um Ihnen das Verständnis der einzelnen Methoden zu erleichtern. Egal, ob Sie ein Anfänger oder ein erfahrener Python-Programmierer sind, dieser Artikel gibt Ihnen den Schlüssel dazu, dies in Python zu tun

In diesem Artikel erfahren Sie, wie Sie die Worthäufigkeit in Python als Prozentsatz ermitteln. Angenommen, wir haben eine Liste von String-Eingaben erhalten. Jetzt ermitteln wir den Prozentsatz jedes Wortes in der angegebenen Liste der Eingabezeichenfolgen. Die Formel (OccurrenceofXword/Totalwords)*100 verwendet die Funktionen „sum()“, „Counter()“, „join()“ und „split()“. Verwenden Sie die Funktionen „join()“, „split()“ und „count()“. das Betreibermodul. Methode 1: Verwenden Sie die Funktionen sum(), Counter(), join() und split(). join() ist Py

Python ist eine beliebte Programmiersprache, die in der Datenanalyse, beim maschinellen Lernen, in der Webentwicklung und in anderen Bereichen weit verbreitet ist. In Python stellt das Zufallsmodul eine Funktion random.randint() zum Generieren zufälliger Ganzzahlen bereit. In diesem Artikel wird erläutert, wie Sie mit der Funktion random.randint() zufällige Ganzzahlen generieren, und es werden einige Codebeispiele bereitgestellt. Zuerst müssen wir das Zufallsmodul importieren: importrandom Als nächstes können wir rando aufrufen

In einem Tencent-Meeting können Benutzer ihre eigenen Kameras zum Teilen einschalten, aber die Kamera hat eine maximale Anzahl von Personen. Was ist also die Obergrenze für die Anzahl der Personen auf der Kamera? Begrenzung der Personenzahl in der Tencent-Meeting-Bar. Finden wir es gemeinsam heraus. Tutorial zur Nutzung von Tencent-Meetings: Was ist die maximale Personenzahl für die Tencent-Meeting-Kamera? Antwort: Das Maximum beträgt 60 Personen und das Minimum 30 Personen. 1. Einführung in die Obergrenze der Personenzahl in der Kamera: 1. Der Computer bietet Platz für bis zu 60 Personen, die die Kamera einschalten können, und ein Bildschirm bietet Platz für bis zu 9 oder 25 Personen gleichzeitig. 2. Das Mobiltelefon kann bis zu 30 Personen unterstützen, die die Kamera einschalten, und ein Bildschirm bietet Platz für bis zu 4 Personen gleichzeitig. 2. Methoden zur Erhöhung der Obergrenze der Videoanzahl: 1. Bei zu vielen Teilnehmern können bis zu 30 Personen gleichzeitig die Kamera einschalten. 2. Wir können die Konto-Avatar-Schnittstelle verwenden, um

Microsofts Windows 11 wächst weiter, wie die neuesten Daten eines AdDuplex-Berichts vom Februar 2022 zeigen. Das Betriebssystem nähert sich schnell der 20-Prozent-Marke, was bedeutet, dass mittlerweile etwa jeder fünfte PC mit Windows 11 läuft. Die öffentliche Version von Windows 11, Windows 1121H2, liegt jetzt bei 19,3 %. Mittlerweile liegt die Quote der Insider, die verschiedene Vorschauversionen testen, bei 0,3 %. Damit beträgt der Gesamtanteil von Windows 11 19,6 %, und bis März könnte dieser prozentuale Anteil 20 % überschreiten. Windows 11 und viele Wind

Beheben von PHP-Fehlern: Versuchen Sie, dem Verbindungspunkt nicht variable Ergebnisse zuzuweisen. Bei der PHP-Entwicklung stoßen wir häufig auf verschiedene Fehlermeldungen. Eine davon ist „TryingtoAssignNon-VariabletoConcatenate“ (TryingtoAssignNon-VariabletoConcatenate). Diese Fehlermeldung weist darauf hin, dass wir im Verknüpfungspunktoperator (.) versuchen, die Ergebnisse einer Nichtvariablen zu verbinden. Um dieses Problem zu lösen, müssen wir zunächst die Rolle und Verwendung des Verbindungspunktoperators verstehen.
