【问题标题】:How to create 100 random numbers between 1 and 9999 with 4 digits, and place numbers in 10 rows of 10 numbers?如何创建 100 个 1 到 9999 之间的 4 位随机数,并将数字放在 10 行,每行 10 个数字中?
【发布时间】:2016-11-09 18:52:36
【问题描述】:

在弄清楚如何解决这个问题时遇到问题,我已经搜索并寻找答案,但它们与我正在寻找的不同。 这是初学者的东西,我意识到,但任何帮助将不胜感激。

下面的代码是我老师给的,它可以创建一个随机数。对于我的生活,我无法弄清楚如何让它创建 100 个随机数并制作一个 10 x 10 的正方形。

eg. 5468 2367 1587 2587 2310 9802 0154 8753 4965 2571
    3249 3248 2158 4659 1321 1278 9871 0123 4654 4587
    etc. for 10 rows.

<div id="answer"></div>

<script type="text/javascript">
function giveValues() {
var length, zeroes;
var number = Math.round((Math.random() * 9999));

// toString()-method and lenght to set amount of digts
zeroes = 4 - number.toString().length;

for (var j = 1; j <= zeroes; j++) {
number = "0" + number;
}
return number;
}
document.getElementById("answer").innerHTML = giveValues();

我也知道有 if (j % nameofvar == 0) { 用于创建新行,但我无法做到这一点。

【问题讨论】:

  • 当您说它们的 10x10 平方时,您是指在第一行显示它们作为您的示例吗?还是在数组中?
  • 是的,如示例中所示。我还没有使用过数组。

标签: javascript for-loop return


【解决方案1】:

考虑到您还没有学习数组,请尝试以下方法,因为我认为它最符合您的要求。这也是一个 Plunker http://plnkr.co/edit/LltYPtSfR9Ndo46kYmVN?p=preview

<div id="answer"></div>

<script>
  function giveValues() {
    var length, zeroes;
    var number = Math.round((Math.random() * 9999));

    // toString()-method and lenght to set amount of digts
    zeroes = 4 - number.toString().length;

    for (var j = 1; j <= zeroes; j++) {
      number = "0" + number;
    }
    return number;
  }

  var columns = 10;
  var total = 100;
  var bigString = "";

  for (var i=0; i<total; i++) {
    if (i != 0 && i % columns == 0) {
      bigString += "<br/>";
    }
    bigString += giveValues(i).toString() + " ";
  }

  var answer = document.getElementById("answer");
  answer.innerHTML = bigString;
</script>

【讨论】:

  • 这看起来像我理解的东西,并且也遵循给定的代码。干杯。
  • 很好,很乐意提供帮助。请为答案投票,然后按答案左侧的复选标记。
【解决方案2】:

最基本的方式:

      function lpad(number) {
    while (number.toString().length < 4) {
        number = "0"+number;
    }

    return number;
}

var max = 9999;

var matrix = [];
var size = 10;

for (var i = 0; i < size * size; i++) {
    if (i % size === 0) {
        matrix.push([]);
    }
    var number = lpad(Math.ceil(Math.random() * max));
    matrix[matrix.length - 1].push(number);
}

document.getElementById("answer").innerHTML = matrix.join("<br />");
&lt;div id = "answer"&gt;&lt;/div&gt;

使用数组更有效,但您也可以简单地连接。

【讨论】:

  • 那老师给的方法是不是太复杂了?我认为其中一个关键部分是返回的值必须是 4 位数字。在你的回答中有像 47 这样的数字,应该是 0047。我相信这就是 toString 部分的重点。
  • 起初错过了填充。已添加。
【解决方案3】:

你可以只生成一个大的随机数,然后将其限制为 4 位。

试试这个:

function giveValues() {
  var number = Math.round((Math.random() * 999999999));
  return number.toString().substr(0, 4);
}
var arr = [];

for(var i = 0; i < 10; i++){
    arr.push([giveValues(), giveValues(), giveValues(), giveValues(), giveValues(), giveValues(), giveValues(), giveValues(), giveValues(), giveValues()]);
}

document.getElementById("answer").innerHTML = arr.join(' <br/>').replace(/,/g,' ');

https://jsfiddle.net/moshekarmel1/34spm4hh/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 2013-07-24
    • 2015-01-10
    • 2014-12-09
    • 2022-01-05
    • 2018-09-14
    相关资源
    最近更新 更多