Skip to content

Commit

Permalink
[doc] 更新event-scheduling
Browse files Browse the repository at this point in the history
  • Loading branch information
huuhghhgyg committed Jan 29, 2024
1 parent ee08aa7 commit deb160f
Showing 1 changed file with 4 additions and 6 deletions.
10 changes: 4 additions & 6 deletions docs/notes/event-scheduling.md
Original file line number Diff line number Diff line change
Expand Up @@ -95,13 +95,11 @@ coroutine.queue(dt,update)

## 随机数
### 随机数生成原理简介
在计算机中,随机选择实际上并不是随机的。事实上,我们在计算机中所做的一切都不是随机的,“不可能制造一台真正生成真正随机数的计算机”这件事情是可以被证明的。我们现在获得的随机数都是伪随机数(Pseudo Random)
在计算机科学领域,所谓的“随机选择”实际上并非真正的随机。事实上,计算机进行的一切操作都不具备真正的随机性。已经有研究证明了“无法制造一台真正能够生成绝对随机数的计算机”的事实。因此,我们目前所使用的随机数实际上是伪随机数

如何生成伪随机数?有一种算法,给定一个数字生成,序列中的下一个数字。用种子(Seed)来初始化这个算法,并迭代得到后续的随机数序列。如果种子相同,那么生成的随机数序列也是相同的
那么,如何生成这些伪随机数呢?一种常见的方法是利用算法,根据给定的初始数字(**随机数种子**)来产生一个数字序列。该算法根据种子进行初始化,并不断迭代生成后续的随机数序列。如果使用相同的种子,那么生成的随机数序列也将是相同的

现在每次需要生成不同随机序列的时候,通过读取计算机的时钟来获得一个种子。这样做的原理是:由于无法确切地知道每次启动程序的时刻,所以这样可以认为每次启动程序使都得到了一个随机的数字可以作为种子。

因此,可以预见的是,这样得到的随机数序列是不可预测的,因为不知道随机数种子会是什么。
为了产生不同的随机序列,通常会利用计算机的时钟作为种子。这种方法的基本原理是:由于我们无法准确知道程序启动的时刻,因此每次启动程序都可以认为是得到了一个随机的时刻,从而获得一个不同的种子。由于我们无法确定种子的具体取值,因此这种方法产生的随机数序列是不可预测的,因为我们无法确定种子的具体取值。

### 创建随机数种子
```lua:no-line-numbers
Expand Down Expand Up @@ -146,6 +144,6 @@ MicroCity Web中的程序控制主要是指3D界面渲染中通过 `scene` 对
local state = scene.render()
```

此处将 `scene.render()` 的返回值存放于 `state` 变量中,`state` 变量的值为 `true` 或者 `false`,分别代表程序的运行状态为运行或者被终止(命令栏中按下按钮3)
`scene.render()`函数的返回值与命令栏中的停止按钮⏹绑定,可以用于检查程序的运行状态:`true`表示程序正在运行,`false`表示程序已经被终止。此处示例将程序的运行状态存放于 `state` 变量中,可以通过 `state` 变量的值来控制程序的运行状态

3D对象的暂停渲染也是通过调用 `scene.render()` 来实现的。如果刷新3D对象是通过不断调用 `scene.render()` 函数实现,并且刷新间隔时间不是通过 `os.sleep()` 来控制,那么可以实现在3D界面上将渲染暂停在某个状态。这是因为如果使用 `os.sleep()` 来控制3D对象的运动速度,那么当点击暂停按钮时,很可能正好处于 `os.sleep()` 的过程中,导致程序无法立即响应,从而导致暂停按钮无效。因此,建议在控制3D对象的运动速度时避免使用 `os.sleep()`,而是通过添加其他参数的方式来控制推进时长,以达到控制3D对象运动速度的目的。

0 comments on commit deb160f

Please sign in to comment.