一、亂數取三個數字
Rnd() 產生大於0小於1的單精準數
題目要求3個數字,所以就進位3次
也就是乘以1000
dim x as integer
x = Rnd()*1000
接著考慮後續處理,由於產生的亂數有可能是0.01甚至0.001
題目要求第一個數字不可為0,0.01*1000 = 10,0.001*1000=1
解決方式很簡單,看是要在取一次亂數或是直接+100
就可以解決此問題,有人擔心這種做法會造成1開頭的答案比其他數字高
我們又不是做樂透開獎,沒差啦............
dim x as integer
x = Rnd() * 1000
If x < 100 Then x = x + 100
最後一項處理,就是數字重複的問題
解題時需要輸入的答案和正確答案作比對
加上題目要求三個數字不可重複
所以我們提早在這裡將三個數字作分割,方便作比對
使用VB內建函數GetChar(字元, 位置)
這樣翻譯怪怪的,看的懂就好...
我的做法:
Dim y(3) As String
'y陣列要定義在外面
-------------------------------------------------------
y(1) = GetChar(x, 1)
y(2) = GetChar(x, 2)
y(3) = GetChar(x, 3)
GetChar取出的是字元,所以y陣列最好指定為字串
取出字串後,在互相比對是否重複,我是將整段亂數取數字寫成自訂函數
假如數字重複就重新呼叫亂數函數
y(1) = GetChar(x, 1)
y(2) = GetChar(x, 2)
y(3) = GetChar(x, 3)
If y(1) = y(2) Then 呼叫自訂函數
If y(1) = y(3) Then 呼叫自訂函數
If y(2) = y(3) Then 呼叫自訂函數