【问题标题】:How to get random 1 or -1 in canvas (javascript)?如何在画布(javascript)中获得随机1或-1?
【发布时间】:2015-05-20 11:50:33
【问题描述】:

如何在画布中获得随机的 -1 或 1(不在 -1 或 1 之间,只是 -1 或 1,只有这 2 个值)?

我知道我可以使用随机数:

Math.random()

但我只想要随机的 1 或 -1。

【问题讨论】:

    标签: javascript canvas random


    【解决方案1】:
    var plusOrMinus = Math.random() < 0.5 ? -1 : 1;
    

    (请先使用搜索JavaScript Random Positive or Negative Number

    【讨论】:

      【解决方案2】:

      你可以这样做:

      var n = (Math.random()>=0.50)?1:-1;
      

      【讨论】:

        【解决方案3】:

        万一有人不明白 ternar 运算符是如何工作的,我换个方式写同样的:

        var value;
        if(Math.random() > 0.5) value = 1;
        else value = -1;
        

        ups,固定昏迷。谢谢。

        【讨论】:

        • 错误:0,5 -> 0.5
        【解决方案4】:

        不使用分支的解决方案:

        ((Math.random()+0.5)<<1)-1
        

        此解决方案使用将 [0, 1] 区间匹配到 {-1, 1} 集合的公式。
        在这里,我使用floor 这样做。

        让我们看看如何: 如果我将 0.5 添加到 Math.random() 我现在在 [0.5, 1.5]。
        铺地板后,结果在 {0, 1} 集中。
        现在你乘以两个 => { 0, 2} 集合。
        现在删除 1 => {-1, 1} 集。

        所以公式是这样的:

        2*Math.floor(Math.random()+0.5)-1
        

        使用移位运算符更快(但更神秘:-)):

        ((Math.random()+0.5)<<1)-1
        

        不幸的是...正如您在此处看到的(查看控制台),分支速度更快。

        https://jsfiddle.net/h6d8bthd/

        【讨论】:

          猜你喜欢
          • 2012-06-22
          • 2018-09-14
          • 2011-07-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-02
          • 1970-01-01
          相关资源
          最近更新 更多