【问题标题】:Incremental value from random number随机数的增量值
【发布时间】:2017-09-20 08:53:26
【问题描述】:

我有这个 javascript。

$(function () {

    $("#generate").click(function () {
        $("#number1").val(generateNumb);
        #$("#number2");
        #$("#number3");
        #$("#number4");
    });

});

function generateNumb() {
    return "000000" + random(10, 16777215).toString(16).toUpperCase();
}

function random(min, max) {
    min = Math.ceil(min);
    max = Math.floor(max);
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

还有这个html:

<body>

    <h1>Number Generator</h1 >

    <div>    
        <input id="generate" type=button value="Generate" /><br/><br/>
    Number<br/>
        <input id="number1" placeholder="Number 1" /><br/>
        <input id="number2" placeholder="Number 2" /><br/>
        <input id="number3" placeholder="Number 3" /><br/>
        <input id="number4" placeholder="Number 4" /><br/>
    </div>

</body>

我想在脚本中添加“#number2”、“#number3”和#number4,它们各自的值是上一个生成值的增量,意思是:

  • number2 = number1 + 01(01 是一个十六进制值)
  • number3 = number2 + 01(01 是一个十六进制值)
  • number4 = number3 + 01(01 是十六进制值)

如何做到这一点?

提前谢谢你。

【问题讨论】:

  • 对于那些回答的人,我深表歉意。我在 HEX 值中犯了一个错误,它不是 02 而是 01。我想这在代码中不会有太大变化;即在适用时使用 01 而不是 02。

标签: javascript random increment


【解决方案1】:

几乎最终的解决方案可以实现为:

$(function() {

  $("#generate").click(function() {
    var increaseBy = increaseBase(generateNumb());

    $("#number1").val(increaseBy(0));
    $("#number2").val(increaseBy(1));
    $("#number3").val(increaseBy(2));
    $("#number4").val(increaseBy(3));
  });

});

function increaseBase(base) {
  return function(value) {
    return "000000" + (base + value).toString(16).toUpperCase()
  }
}

function generateNumb() {
  return random(10, 16777215);
}

function random(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min + 1)) + min;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<h1>Number Generator</h1>

<div>
  <input id="generate" type=button value="Generate" /><br/><br/> Number
  <br/>
  <input id="number1" placeholder="Number 1" /><br/>
  <input id="number2" placeholder="Number 2" /><br/>
  <input id="number3" placeholder="Number 3" /><br/>
  <input id="number4" placeholder="Number 4" /><br/>
</div>

【讨论】:

    【解决方案2】:

    你可以试试:

    var numberOfInputs = 4;
    var inputs = []
    for(n in numberOfInputs) {
        inputs.push($(`#number${n}`)) // We had HTML nodes in a table
    inputs[0].val(generateNumb())
    for(i=1;i<inputs.length;i++) {
        inputs[i] = inputs[i-1].val() + "0x02"
    

    【讨论】:

    • 谢谢。您介意将其集成到代码中吗?我对编码并不精通。提前致谢。
    【解决方案3】:

    就我个人而言,我只会编写更小部分的代码:

    //create your number
    function generateNumb() {
      return random(10, 16777215)
    }
    //call this to output your number in your forms
    function toHex(num) {
      return "000000" + num.toString(16).toUpperCase();
    }
    
    function random(min, max) {
      min = Math.ceil(min);
      max = Math.floor(max);
      return Math.floor(Math.random() * (max - min + 1)) + min;
    }
    

    然后你可以通过调用来调用这些值:

    first = generateNumb();
    second = first + parseInt("02", 16);
    

    然后通过调用toHex(first) 输出值或者您可以立即执行此操作:

    firstHex = toHex(generateNumb);
    secondHex = toHex(generateNumb+parseInt("02",16));
    

    演示:Fiddle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-29
      • 2013-07-22
      相关资源
      最近更新 更多