In diesem Artikel wird der spezifische JS-Code zur Implementierung der angegebenen roten Umschlagreihenfolge und des angegebenen Betrags zu Ihrer Information veröffentlicht. Der spezifische Inhalt ist wie folgt Vorwort
EffektanzeigeProblem mit leeren PaketenRed-Envelope-Algorithmus/* Parameter: Float, Int, Int, Float Param1: Gesamtmenge der roten Umschläge Param2: Anzahl der roten Umschläge Param3: Geben Sie spezielle rote Umschläge an Param4: Geben Sie die Menge spezieller roter Umschläge an*/ let getPrize = Funktion(Gesamt, Zahl, Index, Volumen){ sei Zulage = Gesamt - Volumen; sei arr = []; sei i = 0; während(i < Zahl - 2){ //Geben Sie [0,01, Toleranz-(i*0,01)) an. let temp = (Math.random()*(Zulässigkeit - (Zahl - 1 - i) * 0,01) + 0,01).toFixed(2); // wenn (temp < 0) console.log(`temp:${temp}`); Temp = Temp <= 0? 0,01: Temp; arr.push(parseFloat(temp)); Zulage = parseFloat((Zulage - temp).toFixed(2)); ich++; // console.log(`arr:${arr}, i:${i}`); // Wenn die Verteilung kleiner als 0 ist, nutze die Stärke aus und teile sie gleichmäßig auf, wenn (Zuschuss <= 0) { // console.log(`allowance:${allowance}`); sei w = arr.filter((val,index)=>{ // console.log(`val:${val}`); wenn(Wert > 0,01){ arr[index] = parseFloat((arr[index] - 0,01).toFixed(2)); Rückgabewert; } }); wenn(w.Länge == 0){ Zulage = 0; }anders{ Zulage = 0,01; } } } // Der letzte wird in arr.push(parseFloat(allowance.toFixed(2))); eingefügt. lass Ergebnis = arr; gibt Ergebnis.Slice(0, Index).concat(parseFloat(Volumen), Ergebnis.Slice(Index)) zurück; } Testbeispiele // Testbeispiel für(lass m = 0; m < 10000; m++){ sei total = (Math.random()*100 + 0,01).toFixed(2); lass Zahl = Math.floor(Math.random()*20 +2); während(Gesamt / Zahl < 0,01){ Zahl = Math.floor(Math.random()*20 +2); } let index = Math.floor(Math.random()*(Zahl - 1)); lass Volumen = (Math.random()*(Gesamt - 0,01*(Zahl-1))+0,01).toFixed(2); während(Volumen >= Gesamt || Volumen + 0,01*(Zahl-1) > Gesamt){ // konsole.log(`xx:${volume}`); Volumen = (Math.random()*(Gesamt - 0,01*(Zahl-1))+0,01).toFixed(2); Volumen = Volumen <= 0? 0,01: Volumen; } let test = getPrize(Gesamt, Zahl, Index, Volumen); // konsole.log(test); Lassen Sie Summe = test.reduce((total,val)=>total+=parseFloat(val)); Summe = Summe.toFixed(2); wenn(Summe !== Gesamt) { console.log(`Volumen: ${Volumen}, Gesamt: ${Total}, Zahl: ${Zahl}`); Konsole.log(`Summe: ${Summe}`); Konsole.log(Test); } test.map((Wert,Index)=>{ wenn(Wert <= 0 && Index !== Testlänge - 1){ console.log(`Volumen: ${Volumen}, Gesamt: ${Total}, Zahl: ${Zahl}`); Konsole.log(`Summe: ${Summe}`); Konsole.log(Test); } }); } Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Eine kurze Diskussion über die Effizienz der MySQL-Unterabfrage-Vereinigung und in
>>: Beispiel für die Verwendung des Supervisors zum Verwalten von Nginx+Tomcat-Containern
In MySQL entsprechen Datenbanken Verzeichnissen i...
Code kopieren Der Code lautet wie folgt: <hr S...
Notieren Sie die Problempunkte der MySQL-Produkti...
Inhaltsverzeichnis 1. Union-Typ 2. Crossover-Typ ...
Inhaltsverzeichnis Vorwort Typinferenz Einengung ...
Inhaltsverzeichnis 1. Inhaltsverzeichnis 1.1 Konz...
Inhaltsverzeichnis 1. Listenschnittstelle und and...
Hintergrund Wenn Sie am Blockchain-Protokollmodul...
Inhaltsverzeichnis 1. Beispiel 2. Erstelle 100 So...
Ziel Zeigen Sie eine der Daten im iostat-Befehl i...
Ich frage mich, ob Sie wie ich ein Programmierer ...
Ich habe Apache nie verwendet. Nachdem ich angefa...
Durch die Verwendung der virtuellen Domänennamenk...
1. Log4j zur Protokollsegmentierung 1) Bereiten S...
Dieser Artikel stellt die Installation des Window...