Unter der Annahme, dass rand()
gibt eine Zahl zwischen [0, 1)
es ist offensichtlich, dass rand() * rand()
wird gegen 0 tendieren, weil die Multiplikation von x
um eine Zahl zwischen [0, 1)
ergibt eine Zahl, die kleiner ist als x
. Hier ist die Verteilung von 10000 mehr Zufallszahlen:
google.charts.load("current", { packages: ["corechart"] });
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var i;
var randomNumbers = [];
for (i = 0; i < 10000; i++) {
randomNumbers.push(Math.random() * Math.random());
}
var chart = new google.visualization.Histogram(document.getElementById("chart-1"));
var data = new google.visualization.DataTable();
data.addColumn("number", "Value");
randomNumbers.forEach(function(randomNumber) {
data.addRow([randomNumber]);
});
chart.draw(data, {
title: randomNumbers.length + " rand() * rand() values between [0, 1)",
legend: { position: "none" }
});
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart-1" style="height: 500px">Generating chart...</div>
Si rand()
gibt eine ganze Zahl zwischen [x, y]
dann haben Sie folgende Verteilung. Beachten Sie die Anzahl der ungeraden und geraden Werte:
google.charts.load("current", { packages: ["corechart"] });
google.charts.setOnLoadCallback(drawChart);
document.querySelector("#draw-chart").addEventListener("click", drawChart);
function randomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
function drawChart() {
var min = Number(document.querySelector("#rand-min").value);
var max = Number(document.querySelector("#rand-max").value);
if (min >= max) {
return;
}
var i;
var randomNumbers = [];
for (i = 0; i < 10000; i++) {
randomNumbers.push(randomInt(min, max) * randomInt(min, max));
}
var chart = new google.visualization.Histogram(document.getElementById("chart-1"));
var data = new google.visualization.DataTable();
data.addColumn("number", "Value");
randomNumbers.forEach(function(randomNumber) {
data.addRow([randomNumber]);
});
chart.draw(data, {
title: randomNumbers.length + " rand() * rand() values between [" + min + ", " + max + "]",
legend: { position: "none" },
histogram: { bucketSize: 1 }
});
}
<script src="https://www.gstatic.com/charts/loader.js"></script>
<input type="number" id="rand-min" value="0" min="0" max="10">
<input type="number" id="rand-max" value="9" min="0" max="10">
<input type="button" id="draw-chart" value="Apply">
<div id="chart-1" style="height: 500px">Generating chart...</div>
5 Stimmen
Hier eine naive Definition für "Zufälliger": Für manche bedeutet "zufällig" "schwer zu erraten", z. B. den Wert der obersten Karte im Stapel zu erraten. Durch das Mischen des Stapels scheint es, dass der Zufallswert "noch schwerer zu erraten" ist, und von diesem praktischen, intuitiven Verständnis des Zufalls ausgehend, wäre es sinnvoll, den Stapel im Programm auf irgendeine Weise zu "mischen". Natürlich ist das nicht das, was "Zufall" bedeutet, und die Wissenschaft der Einführung von Entropie in einen pseudozufälligen Prozess ist nicht annähernd so einfach wie das Mischen des Prozesses mit seiner eigenen Ausgabe.
0 Stimmen
Danke @Yi Jiang und @Sam Saffron für die Korrekturen, ich bin eine Tippfehler-Maschine :)
0 Stimmen
@Mild Fuzz: Die Natur leugnet unendliche Unendlichkeiten? Sind das nicht Infinitesimale? Gibt es keine Fraktale in der Natur? Oder habe ich Ihre Aussage aufgrund meiner eigenen Dummheit völlig falsch verstanden?
0 Stimmen
@Trufa Zwei weitere Favs für dein Stellar Badge!
1 Stimmen
@belisarius Ich gebe es nur ungern zu, aber ich lade alle zehn Sekunden meinen Bildschirm neu und warte auf sie :)
0 Stimmen
@Herr Enttäuschung vielleicht bin ich ja dumm, aber die Natur der Unendlichkeit ist, dass sie grenzenlos ist, also würde die Quadratur des Kreises nichts bringen.
1 Stimmen
@Trufa Es ist erstaunlich, wie eine so einfache Frage so viel Interesse weckt!
1 Stimmen
@Liam Auf jeden Fall wusste ich, dass es keine einfache Antwort auf diese einfache Frage gibt, aber niemals diese. Ich denke, es ist ziemlich offensichtlich, dass ich die ganze Komplexität dieser Frage nicht gesehen hatte. Ich denke, dass die Antwort sehr gut über diese Gemeinschaft und ihren Wissenshunger aussagt! Ich bin froh, ein bescheidener Teil davon zu sein! :)
0 Stimmen
- (int) GetRandomNumber { return 4; /* TODO: Test this */ }