gpt4 book ai didi

algorithm - 生成随机点以构建程序线

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:25:26 25 4
gpt4 key购买 nike

我想随机生成点数。好吧,至少应该在 y 轴上有一个限制。稍后我将这些点连接到一条线,这条线应该以简单的动画形式进行。你可以把这想象成一个醉酒的人随意走路,上坡下坡。

enter image description here

这听起来很简单。我在网上搜索了一下,发现这可以使用 markov chain 来完成。 .我觉得这个想法真的很有趣。

您可以自己创建场景的第一个状态,并将此状态作为输入传递给马尔可夫链算法。该算法随机更改此状态并创建步行。

但是我找不到该算法的任何示例,也没有源代码。我刚找到一个演示马尔可夫链算法的小程序:http://www.probability.ca/jeff/java/unif.html

请推荐一些代码。也感谢任何其他如何实现这一点的想法。

我画了一个例子

enter image description here

所以我希望线路以类似的方式进行。有山谷、斜坡……它们是随机的,但随机性仍然适用于直线的初始状态。这就是为什么我在这里发现 makrov 链如此有趣:http://www.suite101.com/content/implementing-markov-chains-a24146

最佳答案

下面是一些 Lua 代码:

absstepmax = 25
ymin = -100
ymax = 100
x = 0
y = 5
for i = 1, 20 do
y = y + (math.random(2*absstepmax) - absstepmax - 1)
y = math.max(ymin, math.min(ymax, y))
x = x + 5
print (x,y)
end

absstepmax 限制每次迭代的 y 步长

yminymax 限制y的范围

示例中没有偏差,即 y 可以对称地向上或向下变化。如果你想让你的“醉酒”更倾向于“下坡”,你可以在调用随机后将偏移量从 absstepmax - 1 更改为 absstepmax - 5 或任何你喜欢的偏差。

在本例中,x 步长是固定的。您也可以使用相同的机制使其随机化。

以下是一些示例运行:

> absstepmax = 25
> ymin = -100
> ymax = 100
> x = 0
> y = 5
> for i = 1, 20 do
>> y = y + (math.random(2*absstepmax) - absstepmax - 1)
>> y = math.max(ymin, math.min(ymax, y))
>> x = x + 5
>> print (x,y)
>> end
5 4
10 22
15 37
20 39
25 50
30 40
35 21
40 22
45 12
50 16
55 16
60 12
65 -1
70 -8
75 -14
80 -17
85 -19
90 -25
95 -37
100 -59
> absstepmax = 25
> ymin = -100
> ymax = 100
> x = 0
> y = 5
> for i = 1, 20 do
>> y = y + (math.random(2*absstepmax) - absstepmax - 1)
>> y = math.max(ymin, math.min(ymax, y))
>> x = x + 5
>> print (x,y)
>> end
5 -2
10 -15
15 -7
20 1
25 1
30 12
35 23
40 45
45 43
50 65
55 56
60 54
65 54
70 62
75 57
80 62
85 86
90 68
95 76
100 68
>

从 OP 添加的绘制结果:

enter image description here

关于algorithm - 生成随机点以构建程序线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6169055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com