【问题标题】:Javascript mix numbers randomly [duplicate]Javascript随机混合数字[重复]
【发布时间】:2012-08-19 18:18:48
【问题描述】:

可能重复:
How to randomize a javascript array?

大家好,我知道如何在 Javascript 中使用 Math.random() 生成随机值,但你能告诉我如何随机混合数字吗?

例如我有数字 1,2,3,4,5,6,7,8,9,10 如何像这样随机混合:2,8,9,1...所以每个数字都应该是只用过一次

【问题讨论】:

    标签: javascript random numbers


    【解决方案1】:

    您可以通过将它们全部放在一个数组中并以随机方式对该数组进行排序来做到这一点。

    var nrs = [1,2,3,4,5,6,7,8,9,10];
    nrs.sort(function(a,b){
        return Math.floor(Math.random()*3 - 1);
    });
    

    【讨论】:

    • 是的,这可能是一个解决方案,但是您如何看待 return 0.5 - Math.random() 而不是 return Math.floor(Math.random()*3 - 1);
    • 糟糕的解决方案,两者都有。见robweir.com/blog/2010/02/microsoft-random-browser-ballot.html。请参阅链接的副本以获得更好的解决方案。
    • @MichaelPetrotta 我并没有从他的问题中真正想到他想要任何接近真正随机化的东西,尽管你说的是真的。此外,这是一本非常好的读物。
    【解决方案2】:
    var nums = [1,2,3,4,5,6,7,8,9,10], numsMixed = [];
    while(nums.length){
      numsMixed = numsMixed.concat(nums.splice((Math.random() * nums.length), 1));
    }
    console.log(numsMixed);
    

    【讨论】:

      猜你喜欢
      • 2013-07-05
      • 2013-05-19
      • 2017-04-11
      • 2020-10-18
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      • 2012-12-11
      • 1970-01-01
      相关资源
      最近更新 更多