Random 使用计时器时进程中的超时值错误:sleep(rand:uniform()*1000)

Random 使用计时器时进程中的超时值错误:sleep(rand:uniform()*1000),random,erlang,Random,Erlang,试图在Erlang中使用timer:sleep(rand:uniform()*1000)创建随机睡眠周期,但收到以下错误: Error in process <0.45.0> with exit value: {timeout_value,[{timer,sleep,1,[{file,"timer.erl"}}] 退出值为的过程中出现错误: {timeout_值,[{timer,sleep,1,[{file,“timer.erl”}] 为什么我会收到此错误?rand:unifor

试图在Erlang中使用
timer:sleep(rand:uniform()*1000)
创建随机睡眠周期,但收到以下错误:

Error in process <0.45.0> with exit value:
{timeout_value,[{timer,sleep,1,[{file,"timer.erl"}}]
退出值为的过程中出现错误: {timeout_值,[{timer,sleep,1,[{file,“timer.erl”}] 为什么我会收到此错误?

rand:uniform()*1000是一个浮点值,而
timer:sleep/1
仅接受整数。您可以使用
trunc
将浮点值转换为整数(丢弃
后的值):

或者,更好的方法是使用
rand:uniform/1
直接生成1到N之间的随机整数:

timer:sleep(rand:uniform(1000)).
rand:uniform()*1000
是浮点值,而
timer:sleep/1
仅接受整数。您可以使用
trunc
将浮点值转换为整数(丢弃
后的值):

或者,更好的方法是使用
rand:uniform/1
直接生成1到N之间的随机整数:

timer:sleep(rand:uniform(1000)).