Wie man zufällig eine lange Zahl in Clojure generiert

Xiufen Xu

Es gibt eine lange Ganzzahl m = 38941629971148227236N. Ich möchte eine Zahl e zwischen 1 <e <m erzeugen und e prüfen, ob diese Anforderung erfüllt ist: gcd (e, m) = 1. Meine Methode ist es, (long (rand m)) zu verwenden, um zufällig e zu generieren. Ich habe eine Warnung erhalten:

IllegalArgumentException Value out of range for long:
1.7166121075068025E19  clojure.lang.RT.longCast (RT.java:1254) 

Mein Code lautet:

(defn find-e [m]
(loop [e (long (rand m))]
    (if (= 1 (gcd e m)) e
        (recur (long (rand m))))))

Ich kenne das Ergebnis lange außerhalb des Bereichs, aber ich weiß nicht, ob es eine Möglichkeit gibt, dieses Problem zu lösen.

Timothy Pratley

Das Problem liegt darin, (long (rand m))dass der zufällige Wert, den Sie auswählen, oft viel größer ist, als in einen Long passen kann. Sie wollen nicht lange einen Bigint machen. Hier ist ein Weg, um es zu umgehen:

(bigint (bigdec (rand 38941629971148227236N)))

Beachten Sie, dass die Auswahl von Zufallszahlen auf diese Weise tatsächlich ein Double erzeugt, das in ein Bigdec konvertiert wird, das in ein Bigit konvertiert wird. Daher ist der Bereich möglicher Zufallswerte begrenzt. Wenn Sie ein Double als Basis-Zufallszahl verwenden, werden nicht alle möglichen Bigints generiert. Wenn Sie eine echte Bigint-Zufallsauswahl wünschen, werfen Sie einen Blick auf diese Antwort ... aber wenn Sie sich nicht allzu sehr darum kümmern, solange Sie einen Bigint im richtigen Bereich erhalten, könnte dies für Sie funktionieren:

(defn find-e [m]
  (loop [e (bigint (bigdec (rand m)))]
    (if (= 1 (gcd e m))
      e
      (recur (bigint (bigdec (rand m)))))))

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Wie generiert man zufällig eine Zahl basierend auf einer bestimmten Wahrscheinlichkeit in R?

Wie generiert man zufällig eine Zahl aus einem Array und verwendet diese Zahl dann in einer switch-Anweisung in C++?

Wie man jede Zahl zählt, die zufällig mit einem Array in C # generiert wird

wie man zufällig eine Sequenz von Listen generiert, die zuvor in Python 3 nicht beobachtet wurden

Wie fügt man der zufällig generierten Zahl mit PHP eine Zeichenfolge hinzu?

Python: Wie konvertiert man eine lange Zahl in einen String?

Wie vergleicht man Benutzereingaben mit einer zufällig generierten Zahl?

Wie generiert man eine zufällige gerade Zahl als Parameter der Funktion in einem einzeiligen Bash-Befehl?

Die Clojure-Methode, um eine zufällige lange Zahl zu generieren

Wie kann man eine Wahrscheinlichkeit zufällig ändern?

Wie kann man eine ganze Zahl zufällig in eine feste Anzahl von ganzen Zahlen teilen, so dass die erhaltenen Tupel gleichmäßig verteilt sind?

Wie man zufälligen Text in eine ganze Zahl umwandelt

Wie man in Scala eine lange Zahl liest, die in Python gepackt war

Wie generiert man zufällig 2 Streucluster mit numpy oder einigen anderen Paketen in Python?

Wie generiert man zufällig Beobachtungen für ein Tibble unter Berücksichtigung vorhandener Spaltentypen?

Weiß jemand, wie man in Java eine Zahl innerhalb bestimmter Bits generiert?

Weiß jemand, wie man in Java eine Zahl innerhalb bestimmter Bits generiert?

Weiß jemand, wie man in Java eine Zahl innerhalb bestimmter Bits generiert?

Wie generiert man mit PHP kryptographisch eine Zahl zwischen 0,00 und 98?

Wie generiert man eine Zufallszahl, nachdem der Benutzer die richtige Zahl erraten hat?

Wie man die Zahl durch "-" zufällig aus einem Zahlenbereich mit PHP ersetzt

Wie implementiere ich eine zufällig generierte Zahl in eine Variable in Setter oder Getter?

Wie man eine Zahl rundet

Wie kann ich eine Zahl zufällig auswählen, ohne ein "Wenn" zu verwenden?

Wie verwende ich eine zufällig generierte Zahl in der switch-Anweisung?

Wie bestimmt Haskell, welche Art von Boolescher Wert eine zufällig generierte Zahl ist?

Wie bestimme ich, ob eine zufällig generierte Zahl ein Vielfaches von 150 ist?

Wie kann ich eine Zahl in einem bestimmten Prozentsatz der Zeit zufällig erscheinen lassen - wiederholt?

Wie kann ich eine zufällig generierte Zahl nach einem Klick mit JavaScript wieder zurücksetzen?

TOP Liste

  1. 1

    Modbus Python Schneider PM5300

  2. 2

    Glassfish v3.0.1 im Vergleich zu Oracle GlassFish Server 3.0.1 - Gibt es einen technischen Grund, die kommerzielle Version zu verwenden?

  3. 3

    Wie schließe ich mehrere Ordner mit der Variablen EXTRA_ARGS aus?

  4. 4

    Wie kann eine gleichmäßige Lastverteilung in ElasticSearch mit Indizes mit unterschiedlicher Anzahl von Shards erreicht werden?

  5. 5

    Wie kann man eine Multi-Container-Anwendung in Steuerkarten erstellen?

  6. 6

    ElasticSearch - Knotensperren konnten nicht abgerufen werden

  7. 7

    Python: Spalten mit demselben Namen zusammenführen, wobei der Mindestwert beibehalten wird

  8. 8

    Elasticsearch startet nicht nach dem Laden in viele Daten

  9. 9

    Ärgerliches Problem mit yaml, das ich nicht lösen kann

  10. 10

    Wie Verwenden von Httpclient mit jedem SSL-Zertifikat, egal wie „schlecht“ es ist

  11. 11

    Wie vergleicht man scala.xml-Knoten richtig?

  12. 12

    ElasticSeach Auto Complete mit dem Vervollständigungsvorschlag, um das vollständige Dokument zurückzugeben

  13. 13

    Wie füge ich eine Spalte in einer Zeile in der Ansible Jinja2-Vorlage mit der for-Schleife hinzu?

  14. 14

    HTTPS-Verbindung mit Moneris-Servern in Curl

  15. 15

    Unity Build-Fehler: Der Name 'EditorUtility' ist im aktuellen Kontext nicht vorhanden

  16. 16

    Bester Crawler, um festzustellen, ob er mit Technologien gebaut wurde?

  17. 17

    So erhalten Sie eine gleichmäßige Höhe für alle Eingabefelder

  18. 18

    Wie kann ich den Kaskadenmodus global einstellen?

  19. 19

    Eclipse Oxygen - Projekte verschwinden

  20. 20

    Wie konvertiere ich einen Vektor von Bytes (u8) in eine Zeichenfolge?

  21. 21

    ElasticSearch BulkShardRequest ist aufgrund von org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor fehlgeschlagen

heißlabel

Archiv