用户:
SCS_user_LoeheodVOQ查看:1 回复:4 评论:1 创建时间:2022-06-29T19:23:19
最近看了一些关于kitten与kitten4的随机数测试的bug(465232、467838等),想找一下bug的起源。
以下为测试:


上面第一个是k4的测试,第二个是k3的测试,左边为结果,右边为代码,由于mp4大于100mb无法转换为gif,所以图像会有一些模糊。
上面的代码一样,为保证看得更清楚,重复执行外面没有加一步执行。
从上面的测试可以看出:k3和k4的随机数都存在一个bug,那为什么会有这个bug呢?了解过网页的都知道,网页的控制代码大多是javascript,所以bug的起源可能是javascript的问题。
然后,我又做了一个测试。 我使用html和javascript代码做了一个和上面代码意思一样的网页,下面是源代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>随机数测试</title>
<script type="text/javascript">
window.onload = () => {
for (let _ = 0; _ < 1000; _++) {
console.log(1)
random = Math.round(Math.random() * 4)
document.getElementsByTagName('li')[random].innerH喵L = new Number(document.getElementsByTagName('li')[random].innerH喵L) + 1
}
}
</script>
</head>
<body>
<ol>
<li>0</li>
<li>0</li>
<li>0</li>
<li>0</li>
<li>0</li>
</ol>
</body>
</html>
(编程猫不支持html代码,所以这里用的是javascript的渲染样式)
如果你新建一个文本文档,将上方代码复制进去(将“喵”改成T/m去斜杠),再把后缀改为.html,双击打开后,就会看到类似于下面的结果(数值可能会不一样,但范围是差不多的)
1.116
2.254
3.271
4.238
5.121
从这里可以发现:随机数bug并不是kitten的问题,而是javascript的问题。
但是,不难想出一个解决方法:
