猫史档案馆


关于kitten与kitten4的随机数bug的起源

用户:SCS_user_LoeheodVOQSCS_user_LoeheodVOQ查看:1 回复:4 评论:1 创建时间:2022-06-29T19:23:19


最近看了一些关于kitten与kitten4的随机数测试的bug(465232、467838等),想找一下bug的起源。  

以下为测试:

center_imagecenter_image

上面第一个是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的问题。

但是,不难想出一个解决方法:

center_image


回复

上一页1 页 / 共 1下一页
SCS_user_LoeheodVOQSCS_user_LoeheodVOQ

纠正错误:把html代码中“喵”换成“t/m”而不是“T/m”

点赞0


评论


SCS_user_LoeheodVOQSCS_user_LoeheodVOQ

后来试了一下,JavaScript随机整数要写Math.floor(Math.random() * 6)

点赞1


评论


雨晴時雨晴時

好!

点赞0


评论


WOWgames工作室WOWgames工作室

html

点赞0


评论