- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个表单,要求用户在数学练习中获得最大结果,以便构建一些练习:
<input type="text" id="maxR" placeholder="type maximum result" />
<button id="activate" onclick="makeDrills()">MAKE</button>
<p id="drill"></p>
我想将所有练习选项及其答案转换为数组。
我需要帮助将这句话翻译成java脚本:
“当 c > 级别添加新的 Q 数组以及钻头及其结果”。
这是我的尝试:
<script>
function theQ(quest, ans) { // drills constructor
this.question = quest;
this.answer = ans;
}
var a, b, c ; // arguments
var quests = [new theQ()]; // arrays holder
var level = document.getElementById("maxR").value; // user input
function makeDrills() { // button pushed
var c = a+b; // pattern of each drill
while (c > level) { // as long result smaller then user input
var a = Math.floor(Math.random() * 10); // choose random number
var b = Math.floor(Math.random() * 10); // choose another random number
quests.push("a+b", "c"); // add the drill to the arrays holder
}
document.getElementById("drill").innerHTML += quests; // print drills
}
</script>
我读过类似的问题并尝试使用他们的技术但没有成功。
编辑:此代码用于教育目的:
a,b,c 是 a+b=c 方程的参数。我尝试制作数学练习生成器,让 child 输入最大结果并按下按钮,然后所有可能的练习选项都会出现。我需要将所有选项作为数组,因为我想使用这些选项作为测试。
所以现在我只想了解如何创建这些数组。
最佳答案
有几个问题:
创建quests数组时,不应向其中添加一个空问题。只需执行 quests = []
在获得 a 和 b 的单独值之前,您正在使用 var c = a+b
计算总和。 var c = a+b
不是一种模式——正如您在注释中所写的那样——;它实际上就在那里执行加法。
level 是一个字符串(因为输入值总是如此),因此当您进行像 c > level
这样的比较时,您正在与一个字符串值,这不会得到预期的结果。
由于您的总和永远不会大于 18(a 和 b 都小于 10),因此如果您输入 a,您的代码将永远运行大于 18 的最大值。此外,使用它作为停止条件似乎不合理。您甚至可能会遇到这样的情况:第一笔金额已经大于允许的金额,而您最终将没有任何问题。只需定义您想要生成的问题数量,可以通过询问用户,也可以在代码中定义次数(例如:10 个问题)。
您可以通过查看生成第一个数字后剩余的金额来确保您的总和在限制范围内。如果您的最大值为 10,而您生成了 6,则让您的第二个数字为 0 到 4 之间的随机数。这样您始终会获得有效的数字。
"a+b"
作为问题不是很有用,因为用户不知道 a
的含义。相反,使其动态化并要求 a + ' + ' + b + ' = '
,其渲染效果类似于 6 + 3 =
。
同样,"c"
是一个字符串,而不是求和的结果,它应该是c
,或者为什么不只是a+ b
,因此您不需要 c 变量。
quests.push("a+b", "c");
正在将两个字符串值推送到数组中,但您想要推送一个问题对象,因此您需要使用 quests.push(new theQ(a + ' + ' + b + ' = ', a+b))
。
由于 quests 是一个对象数组,因此您不应期望将其分配给 innerHTML
属性会呈现有用的内容。您应该指定如何呈现问题。因此,您需要迭代问题,然后为每个问题生成您想要的 HTML 片段。
包含所有这些更正的代码如下。它还具有一个按钮和代码来验证答案的输入。
function theQ(quest, ans) { // drills constructor
this.question = quest;
this.answer = ans;
}
var quests = []; // array of questions
function makeDrills() { // button pushed
var a, b; // We don't need c
// Read the input only when button is pressed:
var level = document.getElementById("maxR").value; // user input
// Empty questions array
quests = [];
// Let's say we want to produce 10 questions
while (quests.length < 10) {
// choose a random integer below the maximum
a = Math.floor(Math.random() * level);
// choose a random integer such that sum is not greater than maximum
b = Math.floor(Math.random() * (level-a+1));
// Question is a dynamicly created string, answer is calculated here
// You need to call theQ here:
quests.push(new theQ(a + ' + ' + b + ' = ', a+b));
}
var container = document.getElementById("drill");
// Set the HTML for all questions
container.innerHTML = quests.map(function (quest, i) {
// Add the question to the drill section, give the input element an ID
// that corresponds to the question number
return quest.question + '<input placeholder="enter sum" id="answer' + i + '"><br>';
}).join(''); // join all HTML pieces together into one string
}
function verify() {
if (quests.length == 0) return; // Nothing to do
// Count the number of wrong answers. Iterate over answers with reduce:
var errorCount = quests.reduce(function (count, quest, i) {
// Add 1 penalty if answer is incorrect
return count + (quest.answer != document.getElementById('answer' + i).value);
}, 0); // Atart counting from 0
if (errorCount == 0)
alert('Congratulations! You answered all questions correctly.');
else
alert('You have entered ' + errorCount + ' wrong answer(s). Try to correct them.');
}
<input type="text" id="maxR" placeholder="type maximum sum" />
<button id="activate" onclick="makeDrills()">Generate questions</button>
<div id="drill"></div>
<button id="verify" onclick="verify()">Verify</button>
关于javascript - 在 JavaScript 中创建随机数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43086730/
我编写了一个函数来随机从 [-10,10] 中获取一对。 import System.Random main = do { s State g a randomSt = S
好的,我了解如何在 Scala 中实现随机数生成器以及如何设置生成的随机数的上限,但我对如何更改下限感到困惑。例如: var computerGuess= scala.util.Random
我写了一个函数来从 [-10,10] 中随机得到一对。 import System.Random main = do { s State g a randomSt = St
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我正在做一个项目,我需要在其中生成 8 个随机数。由于某种原因,我遇到随机数部分非常耗时的问题。 8 个随机数的意思是我需要一个由数字 0-9 组成的 8 个字符长的字符串。例如 01234567 或
这个问题已经有答案了: Why do I always get the same sequence of random numbers with rand()? (12 个回答) 已关闭 9 年前。
我看到这个问题可能已经在这里得到回答:Random using WELL512 但是,它对用户不太友好,也没有提供如何在“真实世界”的代码片段中使用它的示例。 这是我目前拥有的: #define m
我想知道是否有人可以为我澄清这一行。 Create a function die(x) which rolls a die x times keeping track of how many time
我正在制作一款有 6 名防守球员的足球比赛。我将这段代码设置为随机让他们都向四分卫移动。 我想知道是否有更好的方法来做到这一点。我知道必须有一种方法可以在没有这么多 if 语句的情况下循环它,但我对
在以下位置:http://www.fredosaurus.com/notes-cpp/misc/random.html 它提到如果我们想生成一个1-10范围内的随机数,我们可以这样做: r = (ra
如何在 Linux 和 C++ 中使用随机数? 我找到了一些我想使用的代码,它有一行 srand((unsigned)time(0));//seed 但是 gcc 说 board.cpp:94:24:
这个问题在这里已经有了答案: Generating random whole numbers in JavaScript in a specific range (40 个答案) 关闭 9 年前。
我有以下脚本: Timer=0; function countdown(auctionid){ var auctions; var divs; Timer=Timer+1;
利用oracle的dbms_random包结合rownum来实现,示例如下,随机取499户: select * from ( select * from busi.t_ar_
我需要获取随机数,但它不应该等于之前的数字。这是我的一段代码。但这不起作用。 function getNumber(){ var min = 0; var max = 4; var i;
我对 Haskell 还很陌生。我有一个数据类型: data Sentence= Prop Int | No Sentence | And [Sentence]
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能是 on-top
这个问题已经有答案了: How do I generate random integers within a specific range in Java? (73 个回答) 已关闭 7 年前。
function getRandomArbitrary(min, max) { var r = Math.floor(Math.random() * (max - min + 1) + m
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Generate random number with non-uniform density 我尝试识别/
我是一名优秀的程序员,十分优秀!