BASIC 程式設計/隨機數生成
外觀
遊戲的一個有用功能是隨機數。這是一個看起來隨機分佈的數字序列,因此可用於模擬諸如洗牌或在程式每次執行時產生不同行為之類的事件。
| 不同的方言可能需要函式引數,因此RND(), RND(0)和RND(1)很常見。引數通常會被忽略。 |
BASIC 中的隨機數由RND函式生成。它返回一個介於 0 和 1 之間的數字。例如
PRINT "Wikibooks' coolness quotient: ", RND, "%"
你將獲得“華夏公益教科書的酷炫指數:.7055475%”。
| 該序列通常以兩種方式之一產生,具體取決於 BASIC 的方言。對於早期的大型機和小型機 BASIC,以及大多數現代版本,這些數字是使用應用於最後一個生成的數字的數學公式生成的。每次都會返回相同的序列,因此要產生不同的數字,必須更改起始值。這被稱為“對隨機數生成器進行播種”,或者簡稱為“播種”。來自家用電腦時代的 BASIC 使用了基於內部時鐘的不同方法,該方法產生了永遠不同的序列,並且不需要播種。 |
該結果看起來很隨機。再次執行它,你得到了相同的值!這會讓遊戲很無聊。這就是播種的目的,通常用RANDOMIZE語句完成。在現代方言中,這可以使用TIMER關鍵字與時鐘繫結
RANDOMIZE TIMER
PRINT "Wikibooks' coolness quotient: ", RND, "%"
這將列印“華夏公益教科書的酷炫指數:.8532526%”,而另一次則會列印“華夏公益教科書的酷炫指數:.3582422%”。更好,對吧?
但是小數並不總是很有用。如果你想要一個整數,你必須獲得一個隨機數,然後將其轉換為整數。通常你希望該數字在兩個限制之間,比如 0 和 100。一個解決方案是取該數字,乘以最大期望值,加上一半將其四捨五入,然後取整數部分。以下程式碼的某些細微變化非常常見
PER = INT(RND() * 99 + 0.5)
像 QBASIC 這樣的現代方言提供了更多控制。我們可以宣告該變數是一個整數,BASIC 將強制它使用該格式並稍微簡化程式碼
RANDOMIZE TIMER
DIM PER AS INTEGER
PER = RND * 100 + 0.5
PRINT "Wikibooks' coolness quotient: ", PER, "%"
這將列印“華夏公益教科書的酷炫指數:85%”。