2011-01-01 4 views
1

Wenn ich eine sehr kurze Zeichenfolge haben, sagen (JavaScript):Zufallszeichen aus einer kurzen Zeichenfolge - kann die Zufälligkeit beeinflusst werden?

var = "abcd"; 

und ich möchte daraus einen zufälligen Charakter bekommen, könnte ich verwenden:

var random_char = str.charAt(Math.floor(Math.random() * str.length)); 

Jetzt Math.floor(Math.random() * str.length) gibt eine Zufallszahl im Bereich [0..3].

Kann die wahrgenommene Zufälligkeit des zurückgegebenen Zeichens durch Multiplikation der Zeichenkette erhöht werden, d. H. Durch effektive Erhöhung der Reichweite der Zufallszahlen?

var = "abcdabcdabcdabcdabcdabcd"; 

Antwort

4

Das wird nichts ändern. Math.random() gibt einen Pseudozufallswert zwischen [0..1) zurück. Unter der Annahme, dass der Zufallszahlengenerator von guter Qualität ist, wird es keinen Unterschied machen, ob Sie seinen Bereich auf abc oder abcabcabc abbilden.

Wenn Math.random()zurück Zufallszahlen von sehr schlechter Qualität (das heißt ein Mensch könnte die Logik hinter ihnen nur, indem man die Zahlenfolge vor Ort), Ihre Strategie die empfundene ‚Zufälligkeit‘ erhöhen würde in der Tat. Aber das ist nicht relevant, da JavaScript-Laufzeiten in der Regel nicht von Affen geschrieben werden.

+0

Ja, macht absolut Sinn. Dumme Frage jetzt, dass ich darüber nachdenke. Einen schnellen Realitätscheck im Browser zu schreiben nahm weniger Zeit in Anspruch, als diese Frage aufzuschreiben. oO – Tomalak

3

Ich würde Nein sagen. Es ist immer noch eine 25% ige Wahrscheinlichkeit für a, b, c oder d.

+0

Wirklich? Wie funktioniert das Schubladenprinzip? Hier sind nicht mehr Tauben als Löcher. – dkarp

3

Nein, kann es nicht. Schlimmer noch, erhalten Sie einen Fehler 12,5% der Zeit, als Math.round runden Werte von 3,5 bis 3,999999 bis zu 4.

+2

Woah, ich meinte 'math.floor()' natürlich. Danke für die Entdeckung! – Tomalak

Verwandte Themen