Вот некоторый код на 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 на одну итерацию
ymin
и ymax
ограничивают экстент 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: