我不認爲前3個答案中有任何答案是正確的,所以讓我試試看:你說的是時間在滴答滴答,並且在N秒的每一片中,你想要發生一個事件在該片段的隨機時間。如果是這種情況,那麼只要時間是N秒的倍數,就得到一個介於0到N之間的隨機數,並在那個時間生成事件。例如,在僞碼:
time = 0
delta_time = 1 second
max_time = 100 seconds
slice_time = 10 seconds
// decide when event of first slice will occur; can't be at 0: get random #
// in range [delta_time, slice_time]:
next_rand_time = random(delta_time, slice_time)
setup timer to fire at interval of delta_time, each time do the following (callback):
time += delta_time
// is it time to fire the event yet? allow for round-off error:
if abs(time - next_rand_time) < 0.0001:
generate event
// is it time to decide when next random event will be?
if modulo(time, slice_time) == 0:
// can't be on left boundary; get random # in range [delta_time, slice_time]:
next_rand_time = time + random(delta_time, slice_time)
的5個變量(時間,delta_time等)有可能會成爲使用該計時器類的數據成員,以及回調將是類的一個方法。在您的文章中提供一些代碼以獲取更多詳情。