2013-05-07 757 views
1

我試圖在使用定時器的CAPL程序(類似於C語言)中生成一個隨機數。 說我有一個定時器X和我啓動它使用capl生成一個隨機數

/****Timer start****/ 
on start 
{ 
    settimer (x,20000); // setting the timer for 20 secs 
} 

現在我只需要300ms以內之間以20秒隨機數爲500毫秒的分辨率。 CAPL有一個名爲random()的內置函數來執行此操作。

我不喜歡

int random(int x); 

現在,我怎麼能保證我得到一個隨機值只有500毫秒的分辨率?

有什麼建議嗎?

回答

1

我能夠通過編寫如下測試函數來生成隨機數。 random函數生成一個random數字到n-1。 就分辨率而言,庫函數random()不允許改變分辨率。

testfunction Random_No() 

{ 

dword y; 

y = random(20000); 


TestWaitForTimeout(y); 

} 
0

y = random(40); 
TestWaitForTimeout(300+y*500); 

y如何得到0和39之間的隨機值,對應於0-19.5秒500毫秒的分辨率。然後,您將300毫秒添加到總超時時間。由此產生的超時將在300ms到20s之間,分辨率爲500ms。