Groups | Search | Server Info | Keyboard shortcuts | Login | Register
Groups > de.comp.lang.javascript > #5157
| 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 | Next — Previous in thread | Find similar
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