js implementiert den Algorithmus zur Angabe der Reihenfolge und Menge der roten Umschläge

js implementiert den Algorithmus zur Angabe der Reihenfolge und Menge der roten Umschläge

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

  • Geschrieben auf Wunsch eines Freundes
  • Der Mindestbetrag für ein einzelnes Paket beträgt 0,01
  • Wenn alle anderen Werte außer dem angegebenen Betrag 0,01 sind, beträgt die Wahrscheinlichkeit, dass das letzte Paket 0 ist
  • Dieser Algorithmus hat 1.000.000 Tests mit einer Fehlerrate von 3 pro Million bestanden

Effektanzeige

Problem mit leeren Paketen

Red-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:
  • Verwenden von JS zum Implementieren von Beispielcode für den Algorithmus zur binären Baumdurchquerung
  • So verwenden Sie JavaScript zum Implementieren von Sortieralgorithmen
  • JavaScript-Programmierung durch Lernen der Positionierung des Schwerpunktalgorithmus in Matlab
  • Tutorial zum binären Suchbaumalgorithmus für JavaScript-Anfänger
  • Zusammenfassung von sieben in JavaScript implementierten Sortieralgorithmen (empfohlen!)
  • Eine kurze Diskussion über einen effizienten Algorithmus zum Erstellen von Baumstrukturen in JavaScript
  • So lernen Sie algorithmische Komplexität mit JavaScript
  • So verwenden Sie Javascript zum Erstellen einfacher Algorithmen

<<:  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

Artikel empfehlen

Implementierung eines Element-Eingabefelds, das automatisch den Fokus erhält

Beim Erstellen eines Formulars in einem aktuellen...

Definition und Funktion des zoom:1-Attributs in CSS

Heute wurde ich gefragt, wozu das Zoom-Attribut i...

MySQL InnoDB-Überwachung (Systemebene, Datenbankebene)

MySQL InnoDB-Überwachung (Systemebene, Datenbanke...

Ein IE-Absturzfehler

Code kopieren Der Code lautet wie folgt: <styl...

mysql 8.0.18 mgr-Installation und seine Umschaltfunktion

1. Systeminstallationspaket yum -y install make g...

Lösung für das MySQL Master-Slave-Verzögerungsproblem

Heute werden wir uns ansehen, warum es zu Master-...

Docker erstellt Schritte zur Implementierung von Kubectl-Images

Wenn der Programmdienst mit k8s bereitgestellt wi...

Automatisches Erstellen und Bereitstellen mit Docker+Jenkins

Dieser Artikel stellt die automatische Build-Bere...

Detaillierte Erklärung der grundlegenden Verwendung des VUE Watch Listener

Inhaltsverzeichnis 1. Der folgende Code ist eine ...

GZIP-Komprimierung Tomcat und Prozessdiagramm zur Verbesserung der Web-Leistung

1. Einleitung Ich habe vor Kurzem an einem Projek...

Einführung in Javascript DOM, Knoten und Elementerfassung

Inhaltsverzeichnis DOM Knoten Elementknoten: Text...

Erfahren Sie mehr über die MySQL-Speicher-Engine

Inhaltsverzeichnis Vorwort 1. MySQL-Hauptspeicher...