2017-05-05 76 views
-1

我一直在试图弄清楚如何在现在自己做一些事情。我需要创建一些可以让用户通过按屏幕上的按钮或刷新浏览器窗口来生成数字/单词的内容。事情是我已经想出了如何做到这一点,以便数字/字是随机生成的,但我需要的是确保它们以百分比的机会产生,以便一个人有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。

+0

你试过了什么代码? –

+0

*“一个人有95%的机会回到屏幕,另一个有20%的机会等等。”* - 这个机会不应该达到100%吗?或者你是否说单击按钮可以同时显示任意数量的单词,每个单词都有自己的百分比出现机会? “生词”是什么意思?从预先确定的单词列表中进行选择,或者将字母随机放在一起? – nnnnnn

+0

@nnnnnn“或者你是否在说单击按钮可以同时显示任意数量的单词,每个单词都有自己的百分比出现机会?” <----正是这个。 – xenofied

回答

0

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

在此基础上,你需要定义一个单词列表与他们的机会,所以也许一个类似对象的数组:

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

或者仅仅是一个对象,其中每个属性的名称就是一个字有关联的值外观给人的机会:

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

无论哪种方式,当按钮被点击你遍历列表,并决定为每一个是否显示。对于这个演示中,我已经走了使用的对象,而不是对象的数组的第二个选项:

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>") 
 
})
<button id="generate">Show words</button> 
 
<div id="output"></div>

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

+0

这是一个令人难以置信的彻底的答案,'运行代码片段'证明它正是我所需要的。我仍然在努力从头开始重新创建,但我会继续下去,直到我弄明白为止。我认为我的问题是在整个计划的适当部分进行组织。谢谢@nnnnnn的准确和准确的回应。 – xenofied

0

如果您可以生成随机数字,您可以使用生成的数字和一系列if语句来选择要显示的单词。所以,如果你想让你的话是'苹果'25%的时间和'香蕉'75%:

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

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

    return word; 
} 

等无论你想考虑的许多选项。

编辑:重新阅读并看到您的代码后,这并不完全回答您的问题,但它可能会帮助您。

+0

谢谢雷蒙德。这段代码似乎是我开始的好地方。今晚我会开始玩。我的第一篇文章,我已经热爱这个社区。希望我能在某些时候提供帮助。 – xenofied