无法获得javascript代码输出,

时间:2017-09-10 06:47:49

标签: javascript output

问题:

我正在尝试使用javascript创建RNG随机数生成器,我的目标是让RNG使用种子值生成随机数,这几乎不可能预测随机数的模式。

代码从这里开始:

    var digits = 10,
        seed = 9999199999;
    
    function nextRand() {
        var n = (seed * seed).toString();
        while (n.length < digits * 2) {
            n = "0" + n;
        }
        var start = Math.floor(digits / 2),
            end = start + digits;
        seed = parseInt(n.substring(start, end));
        return seed;
    }
    
    function nextRandFloat() {
        return nextRand() / 9999999999;
    }
    for (var i = 0; i < 20; i++) {
        console.log(nextRandFloat());
    }
    var results = [];
    for (var i = 0; i < 100000; i++) {
        var rand = nextRand();
        if (results[rand]) {
            break;
        }
        results[rand] = true;
    }
    console.log(i);

我已经在很多javascript编辑器中运行了这个代码,但我没有得到任何人可以请任何人解释我做错了什么。

2 个答案:

答案 0 :(得分:0)

你的代码似乎对我有用

&#13;
&#13;
var digits = 10;
var seed = 9999199999;

function nextRand() {
    var n = (seed * seed).toString();
    while (n.length < digits * 2) {
        n = "0" + n;
    }
    var start = Math.floor(digits / 2),
        end = start + digits;
    seed = parseInt(n.substring(start, end));
    return seed;
}

function nextRandFloat() {
    return nextRand() / 9999999999;
}
for (var i = 0; i < 20; i++) {
    console.log(nextRandFloat());
}
var results = [];
for (var i = 0; i < 100000; i++) {
    var rand = nextRand();
    if (results[rand]) {
        break;
    }
    results[rand] = true;
}
console.log(i);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

如果您在网页上运行此代码而未将其封装在<script>标记中,则浏览器将无法执行该脚本。您可以在Stackoverflow,jsfiddle.net和codepen.io上运行此脚本,而不使用这些标记,因为这些环境的设计方式。

此外,您不会在网页上看到任何输出,因为脚本将输出记录到控制台。如果您使用谷歌浏览器,请转到开发人员工具,您可以看到记录的输出。当我检查控制台时,出现以下输出:

 0.0006200016000620002
 0.03844019840384402
 0.7648853031764885
 0.952689837895269
 0.7927047390792705
 0.08032330580803233
 0.18334546401833454
 0.5559169375555917
 0.364139937836414
 0.789430098778943
 0.9880733491988073
 0.894320169089432
 0.8564680188856468
 0.7467227197746723
 0.4820116164482012
 0.5198344540519835
 0.7859565478785957
 0.7695029693769503
 0.4819761516481976
 0.10107111461010711
 20570

注意,您不必总是对脚本标记进行硬编码,您可以使用JavaScript或jQuery按照discussion动态添加它们。