Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie die Red-Envelope-Funktion in PHP-Code

So implementieren Sie die Red-Envelope-Funktion in PHP-Code

藏色散人
藏色散人Original
2021-11-02 09:39:072652Durchsuche

So implementieren Sie die Funktion „Roter Umschlag“ in PHP-Code: 1. Verwenden Sie die Methode „distribute_red_bages“, um glückliche rote Umschläge zu erzielen. 2. Verwenden Sie die Methode „average_red_bages“, um eine gleichmäßige Verteilung der roten Umschläge zu erreichen. 3. Verwenden Sie die Methode „rob_red_bages“, um die angegebene Anzahl zu erreichen aus roten Umschlägen.

So implementieren Sie die Red-Envelope-Funktion in PHP-Code

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP-Version 7.1, DELL G3-Computer

Wie implementiert man die Red-Envelope-Funktion in PHP-Code?

PHP-Red-Envelope-Funktionscode

Diese Frage wurde mir vor einiger Zeit gestellt. Kürzlich werde ich darüber schreiben, wenn ich Zeit habe. Es ist ziemlich interessant.

Lassen Sie uns zunächst die Methoden zum Ergreifen roter Umschläge klassifizieren:

Für Leute, die rote Umschläge verschicken, gibt es diese ungefähr 3 Kategorien (an die anderen habe ich noch nicht gedacht, wenn dir die einfallen, kannst du mich gerne kontaktieren ~)

1. Die Anzahl der roten Glücksumschläge ist variabel (es hängt alles vom Glück ab)

2. Die angegebene Anzahl an roten Glücksumschlägen (die Anzahl steht fest, mindestens ein Punkt)

3. Die roten Umschläge werden gleichmäßig aufgeteilt (die Anzahl steht fest, jeder teilt sie gleichmäßig) Das lässt sich doch einfacher schreiben, oder? Hey

Code:

<?php
var_dump(rob_red_bages(5 , 10));
var_dump(distribute_red_bages(5));
/*
方法主要功能:拼手气红包(个数不定)
一个参数
    参数一: 红包总金额(按分计算)
*/
function distribute_red_bages($sum){
    $sum = $sum*100;
    $i=0;
    while($sum>0){
        $temp = rand(1 , $sum);//红包值
        $sum -= $temp;
        $arr[$i++] = $temp/100;
    }
    //check($arr);
    return $arr;
}
/*
方法主要功能:均分红包
两个参数:
    参数一: 红包总金额
    参数二: 均分个数
*/
function average_red_bages($sum , $num){
    $res = $sum/$num;
    for($i=0 ; $i<$num ; $i++){
        $arr[$i] = $res;
    }
    //check($arr);
    return $arr;
}
/*
方法主要功能:规定个数的手气红包
两个参数: 
    参数一:红包总金额
    参数二:红包个数
    
    计算流程,随机生成num个数
    求和得到m
    用sum/m 得到每个数需要k
    用随机数*k
*/
function rob_red_bages($sum , $num){
    $sum = $sum*100;
    for($i=0 ; $i<$num ; $i++){
        $temp = rand(1 , $sum);
        $arr[$i] = $temp;
        $sumall += $temp;
    }
    $k = $sum/$sumall;
    for($i=0 ; $i<sizeof($arr); $i++){
        $arr2[$i] = $arr[$i]*$k/100;        
    }
    return $arr2;
}
/*红包总额检测*/
function check($arr){
    foreach($arr as $a){
        $sum += $a;
        echo $a."+";
    }
    
    echo " 0 =".$sum."\n";
}
?>

Lasst uns die glücklichen roten Umschläge analysieren (ich werde nicht über die gleiche Aufteilung sprechen, jeder weiß es):

Die Anzahl der glücklichen roten Umschläge ist variabel: (Gesamtbetrag: Summe)

- --- >Zufällig die erste Zahl kleiner als Summe: n

---->Diese Zahl vom Gesamtbetrag subtrahieren: temp = sum-n

---->Zufällig eine Zahl

-- -->Rekursieren Sie die obige Methode, bis die Gesamtmenge 0 beträgt

---->Ein Array zurückgeben, das zufällige Ergebnisse speichert

Diese Methode ist konventioneller und kann auch verwendet werden, um eine bestimmte Anzahl roter Umschläge zu erreichen ! Allerdings~

Die Idee, die Anzahl der glücklichen roten Umschläge festzulegen (Gesamtbetrag, Anzahl der roten Umschläge)

----> Zufällige Zahlen, die kleiner als die Summe sind, generieren ein Array

- ---> Für diese Zahlen summieren Sie, um die Gesamtsumme zu erhalten. ----> Teilen Sie die Summe durch die Gesamtsumme, um das gemeinsame Vielfache aller generierten Zahlen zu erhalten gemeinsames Vielfaches, um den Wert jedes roten Umschlags zu erhalten

Diese Methode hat Nachteile (das Endergebnis kann etwas größer als die Summe oder etwas kleiner als die Summe sein, da die Division zu irrationalen Zahlen führen kann)

Das ist es wahrscheinlich! Willkommen zur Kommunikation und Korrektur! ~~~

Empfohlenes Lernen: „

PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Red-Envelope-Funktion in PHP-Code. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn