- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在从头开始创建一个迷你家庭游戏,我使用随机选择块在 1 到 27 之间进行选择。我有 27 个背景,上面写着 1 到 27 个数字。但是我注意到在大约 21-22 个数字之后,随机选择器无法选择任何剩余的数字。下面是我的代码的样子 -
如何修复此代码以确保它随机选择 1 到 27 之间的所有内容?
最佳答案
您的问题是由于“包含”块的工作方式造成的。很自然地假设它将您给它的值与列表中的每个值进行比较,如果匹配则评估为“真”,如果不匹配则评估为“假”。但不幸的是,这不是它的作用。相反,它将列表视为通过连接列表中的所有元素(用空格分隔每个元素)形成的单个字符串,然后检查您询问的内容是否包含在该字符串中。
如果您运行此代码段,您可以看到这一点:
你会发现你的 Sprite 实际上会说“你好”,即使列表中的任何地方都没有包含“2 3”!
在您的脚本中,这具有排除某些个位数数字的效果,具体取决于选择数字的顺序。例如,号码 1
极不可能被选中,因为您可以选择的数字几乎有一半带有数字 1
在他们之中。同样 2
.其他数字被排除的机会要低得多,但这是一个非零的机会,至少其中一些数字往往出于同样的原因被排除在外。
换句话说,当您选择了 27 个号码中的大约 20 到 22 个时,剩下的其余号码将被视为已被选中,即使它们没有被选中。
如果你实现了一个适当的“包含”块,你可以让你的脚本工作,像这样:
然后你可以像这样在你的主脚本中使用它:
综上所述,您选择随机数的方法并不理想,因为您必须执行此循环并反复选择和忽略一些数字,并且随着循环的进行越来越多。如果您开始不得不从更大范围的数字中进行选择,这可能会变得非常棘手。
最好实现为适当的“洗牌”。对此有一个标准算法,称为 Fisher-Yates shuffle .本质上,你用你想要选择的所有数字初始化你的列表,从第一个元素开始,选择一个随机的其他元素与该元素交换(你所在的元素可以被选择),交换值,然后移动到下一个元素。在每次迭代中,您只从列表中剩余的元素中挑选一个新元素。
我将在您的 Scratch 程序中实现 Fisher-Yates shuffle 留给您和其他读者。这是一个很好的编程练习。 :)
关于mit-scratch - 为什么随机选择不从头开始选择一些数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57334851/
互联网上到处都是他们创建云变量的示例/教程。但是当我创建一个变量(我使用了scratch 2和3)时,我得到了 但我想得到的是: 我刚刚看了一个 youtube 教程,其中被告知要使云正常工作,您必须
我正在使用 Scratch 1.4 为 child 准备类(class)。 本类(class)是关于控制真实设备(自制交通信号灯、 retrofit 有电机、传感器等的玩具) 为了连接硬件,我使用远程
我正在和我的 child 一起阅读一本“用 Scratch 学习编程”的书。其中一项练习是要求创建一个使用一些简单公式的“功能块”。他们没有在书中解释什么是“功能块”,否则我可能会错过。我也找不到任何
我需要构建 Scratch 中使用的编程 block 的迷你版或稍后!或开放 block 。 它们中的代码都很大而且很难理解,尤其是在 Scratch 中,它是用 SmallTalk 的某种子集编写的
我想知道是否有一种简单的方法可以打开一个 .txt 文件并将一些逗号分隔的数据加载到 Scratch 中的变量中,然后将一些变量数据从 Scratch 添加到一个 .txt 文件或类似文件中? 我已经
我儿子对 ROT-13 密码感兴趣。我想帮助他在 MIT Scratch 中编写一个程序,该程序可以将字符串作为输入并返回 ROT-13 编码的文本作为输出。为此,程序需要取出字符串,分离出所有字符,
在 Scratch 2.0 中,添加了对自定义堆栈 block (procedures) 的支持。但是有什么方法可以使用它来“抽象掉”返回值的逻辑吗? 例如,我这里有一个简单计算指数的脚本:( vie
我有一个 multiplayer project它有一些永远的循环,其中包含检查代码。 问题是,由于变量 dvotes、uvotes 滞后,多台计算机可能会处理此问题并更改 crabx 或 craby
我可以阻止某个脚本中的代码在另一个脚本中运行吗?我知道有一个停止 block ,但您只能停止当前脚本、所有其他脚本或所有脚本。 最佳答案 这里有一个解决方法:创建另一个隐藏的 Sprite ,其中只有
我正在为 MIT Scratch 中的教育编写一个简单的游戏,并想让一个 Sprite 转向另一个 Sprite (想想我们的英雄飞船后面的一艘外星飞船)。我可以轻松地让外星飞船指向英雄: point
我尝试从头开始编写Bridson 的泊松圆盘采样算法,它似乎是一些副作用或我找不到的错误。你能帮帮我吗? 这是我的尝试: My try online. Some explanation on the
在我的小狗沙龙项目中,我在到达项链部分时遇到了问题。我希望所有未使用的项链在收到消息 m11 时消失,但保留小狗身上的项链。然而,现在所有的项链都不见了。 这是将项链分配给小狗时运行的代码: 这会将它
我希望我的学生使用 Scratch 的衍生产品 Enchanting 对 Mindstorm NXT 机器人进行编程,以驱动预先编程的类(class),沿着路线行驶并避开障碍物。 (二态、五态和比例线
Error Image 我的一位学生正在 Mac 上使用 IntelliJ 中的处理。我们使用与我在 PC 上使用的相同步骤进行设置(适用于我的 PC),但现在它给我一个错误,指出文件名应该是 Scr
大家好,我是IT共享者,人称皮皮。 前言 Scratch作为少儿编程的首选编程语言,这几年发展的如火如荼,当然,这主要还是因为它简单易学,不用掌握太多概念即可编程,这意味着你不用认识英文单词
我有这个代码: 但是每当 shoot 消息被发送到 bullet Sprite ,并且舞台上有一个克隆人还没有击中它的目标时,克隆人就会与 go to x: (xOfTower) y: (yOfTow
我正在从头开始创建一个迷你家庭游戏,我使用随机选择块在 1 到 27 之间进行选择。我有 27 个背景,上面写着 1 到 27 个数字。但是我注意到在大约 21-22 个数字之后,随机选择器无法选择任
我注意到永远(或重复())循环在迭代之间需要时间(没有“等待()秒”块)。这究竟是多久? 最佳答案 使用此代码进行测试: 每次迭代平均为 0.000000994 秒,因此在处理时间之外似乎没有故意延迟
我的目标是构建 5x5 的图像网格。在以下代码中,row、col 和 rowcol 被创建为 Sprite 的本地变量,以及 newcol, newrow 和 cats 是全局的。 (顺便问一下,是否
我正在 Scratch 上制作一个桨球游戏(只是为了好玩),但我的计分遇到了问题。如果你想看我已经写的代码,游戏链接是https://scratch.mit.edu/projects/66541388
我是一名优秀的程序员,十分优秀!