gpt4 book ai didi

c# - "smooth"随机数的算法

转载 作者:太空狗 更新时间:2023-10-29 21:45:51 25 4
gpt4 key购买 nike

谁能给我一些关于如何生成“平滑”随机数的提示?这就是我所说的平滑:

随机数应在游戏中使用,例如风向和强度(有没有人记得好老的“蠕虫”?)。当然,每隔一秒左右为这些值设置随机数看起来会非常不稳定。我宁愿在给定的值范围内有某种平滑的振荡。有点像正弦波,但更随机。

有人明白我的意思吗? ;-)任何关于如何实现这种行为的想法都将不胜感激。

最佳答案

如果你希望delta(变化)很小,只要为delta生成一个小的随机数即可。

例如,代替:

windspeed = random (100)                # 0 thru 99 inclusive

使用类似的东西:

windspeed = windspeed - 4 + random (9)  # -4 + 0..8 gives -4..4
if windspeed > 99: windspeed = 99
elif windspeed < 0: windspeed = 0

这样,您的风速仍保持在要求的范围内,并且只会逐渐变化。

这将适用于速度等绝对值,如果您逐渐改变的是与固定方向的角度,则也适用于方向。

它可以很好地用于任何测量。


或者,如果你想确保风速变化可能有很大的增量,但速度很慢,你可以像现在一样生成你的目标风速,但逐渐向它移动:

windspeed = 50
target = windspeed
while true:
# Only set new target if previous target reached.

if target == windspeed:
target = random (100)

# Move gradually toward target.

if target > windspeed:
windspeed = windspeed + max (random (4) + 1, target - windspeed)
else:
windspeed = windspeed - max (random (4) + 1, target - windspeed)

sleep (1)

关于c# - "smooth"随机数的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12704523/

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