如何以百分比的机会显示数字/单词?

时间:2017-05-05 03:36:38

标签: javascript html

我一直试图弄清楚如何自己做这件事一段时间了。我需要通过按下屏幕上的按钮或刷新浏览器窗口来创建允许用户生成数字/单词的内容。问题是我已经弄清楚如何做到这一点,以便数字/单词是随机生成的,但我需要的是确保它们以百分比的机会产生,这样一个人有95%的机会返回屏幕,另一个是20%的几率等等。

我知道这对服务更有利于而不是问题,但我一直在试图自己解决这个问题太久了。我完全明白,如果我从网站上被踢了/没有人给我时间。

以下是我用来生成随机数的代码,但如上所述,我想更改此值,以便以百分比机会生成每个数字。

<html>
<body>

<p id="demo"></p>
<p id="demo1"></p>
<p id="demo2"></p>
<p id="demo3"></p>
<p id="demo4"></p>
<p id="demo5"></p>
<p id="demo6"></p>

<script>
document.getElementById("demo").innerHTML =
Math.floor(Math.random() * 10);

document.getElementById("demo1").innerHTML =
Math.floor(Math.random() * 10);
document.getElementById("demo2").innerHTML =
Math.floor(Math.random() * 10);
document.getElementById("demo3").innerHTML =
Math.floor(Math.random() * 10);
document.getElementById("demo4").innerHTML =
Math.floor(Math.random() * 10);
document.getElementById("demo5").innerHTML =
Math.floor(Math.random() * 10);
document.getElementById("demo6").innerHTML =
Math.floor(Math.random() * 10);
</script>

</body>
</html>

谢谢。

PS:我没有编程经验FYI。

2 个答案:

答案 0 :(得分:0)

如果您可以生成随机数,则可以使用生成的数字和一系列if语句来选择要显示的单词。所以,如果你想让自己的话成为&#39; apple&#39; 25%的时间和“香蕉”#39; 75%:

function randomWord(){
  var num = Math.floor(Math.random() * 100);
  var word;

  if (num < 26){
      word = 'apple';
  } else {
      word = 'banana';
  }

  return word;
}

对于您想要考虑的许多选项等等。

重新阅读并查看代码后,

修改:这并不能完全回答您的问题,但无论如何它都可能对您有所帮助。

答案 1 :(得分:0)

在评论中澄清说,单击按钮(或页面刷新,无论如何)可以同时显示任意数量的单词,每个单词都有自己出现的百分比几率。

在此基础上,你需要定义一个有机会的单词列表,所以可能是一组对象,如:

var words = [ { word: "Hello", chance: 10 }, { word: "Hi", chance: 95 }, /* etc. */ ]

或者只是一个对象,其中每个属性名称都是一个带有相关值的单词,可以显示:

var words = { "Hello": 10, "Hi" : 95, /* etc. */ }

无论哪种方式,当单击按钮时,您会遍历列表,并决定是否显示它。对于这个演示,我已经选择使用对象而不是对象数组:

&#13;
&#13;
var words = {
  "Green": 95, "Yellow": 25, "Blue": 50, "Orange": 75, "Black": 33, "Purple": 10
}

document.getElementById("generate")                // when the button
  .addEventListener("click", function() {          // is clicked

    var output = []                                // create an empty array, then
    Object.keys(words).forEach(function(word) {    // for each word in the list
      if (Math.random() * 100 < words[word])       // decide whether to display
          output.push(word)                        // if so add to output array
    })

    // finally, turn output array into a string separated by <br> elements
    document.getElementById("output").innerHTML = output.join("<br>")
})
&#13;
<button id="generate">Show words</button>
<div id="output"></div>
&#13;
&#13;
&#13;

您可以将最后一行更改为output.join(", "),将所选单词显示为以逗号分隔的列表。或者你可以添加非常复杂的代码来输出ul中自己的li元素中的每个单词,或者其他任何内容。