Groups | Search | Server Info | Keyboard shortcuts | Login | Register


Groups > de.comp.lang.javascript > #5157

Re: Zufallszahl mit vielen Nullen

Path csiph.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail
From Stefan Reuther <stefan.news@arcor.de>
Newsgroups de.comp.lang.javascript
Subject Re: Zufallszahl mit vielen Nullen
Date Wed, 18 Sep 2019 18:50:40 +0200
Lines 48
Message-ID <qltua1.1rs.1@stefan.msgid.phost.de> (permalink)
References <gucq2bF9v1pU1@mid.individual.net>
Mime-Version 1.0
Content-Type text/plain; charset=utf-8
Content-Transfer-Encoding 8bit
X-Trace individual.net Wv1dSJQV/G8pBW0p/ofKnQEqeeKcFCO5UBgyxlIhznCfIYlDNg
Cancel-Lock sha1:hCA7KRzCcqgSNZJ+lguiCIMKccY=
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 Hamster/2.1.0.1538
In-Reply-To <gucq2bF9v1pU1@mid.individual.net>
Xref csiph.com de.comp.lang.javascript:5157

Show key headers only | View raw


Am 17.09.2019 um 21:21 schrieb Micha Kuehn:
> Ich habe mir gedacht:
> 1. ich erzeuge eine beliebige Zufallszahl in diesem Bereich.
> 2. ich mache einen String daraus, weil man dann direkter auf die
> einzelnen Stellen zugreifen kann.
> 3. ich erzeuge eine n-elementige Menge von Zufallszahlen im Bereich 1
> bis anzahlstellen der Zahl. Menge heißt hier: diese n Zahlen dürfen sich
> nicht doppeln.
> 4. Die entsprechenden Stellen der Zufallszahl überschreibe ich mit "0".
> 5. Aus diesem String mache ich wieder eine Zahl.
> 
> Wie geht Schritt 3? Wie kann ich n sich nicht wiederholende
> Zufallszahlen von 1-anzstellen ziehen? Gibt es Mengen in JavaScript?

Mach ein Array mit all den Zahlen und zieh Elemente daraus.

    // Array mit den Zahlen 0 .. 99
    var a = Array.from(Array(100).keys());

    // Ziehe 20 aus 100 ohne Wiederholungen
    for (var i = 0; i < 20; ++i) {
       console.log(a.splice(Math.random()*a.length|0, 1)[0]);
    }

('Math.random()*a.length' = zufälliger Index für das verbleibende Array,
'|0' = Math.trunc(), 'splice' = Element aus dem Array rausschneiden und
zurückgeben)

> Oder gibt es für mein Vorhaben einen ganz anderen, besseren Ansatz?

Den Schritt 5 solltest du auf jeden Fall weglassen. JavaScript-Zahlen
haben nur begrenzte Genauigkeit, konkret: 53 Bits.

   >> Math.pow(2, 53)-1
   <- 9007199254740991
   >> Math.pow(2, 53)
   <- 9007199254740992
   >> Math.pow(2, 53)+1
   <- 9007199254740992

Wenn du eh ein Zahlwort draus machen willst, wirst du das Ergebnis eh in
Dreier-/Sechsergruppen verarbeiten, und das geht am besten als String.

Insofern wäre auch zu überlegen, den Schritt 1 gleich als String
auszuführen.


  Stefan

Back to de.comp.lang.javascript | Previous | NextPrevious in thread | Find similar


Thread

Zufallszahl mit vielen Nullen Micha Kuehn <micha-usenet@nurfuerspam.de> - 2019-09-17 21:21 +0200
  Re: Zufallszahl mit vielen Nullen Robin Koch <robin.koch@t-online.de> - 2019-09-18 00:55 +0200
    Re: Zufallszahl mit vielen Nullen Micha Kuehn <micha-usenet@nurfuerspam.de> - 2019-09-18 21:58 +0200
  Re: Zufallszahl mit vielen Nullen Stefan Reuther <stefan.news@arcor.de> - 2019-09-18 18:50 +0200

csiph-web