close

一、亂數取三個數字

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 呼叫自訂函數


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 arvin1129 的頭像
    arvin1129

    阿罵尼 ` Station

    arvin1129 發表在 痞客邦 留言(0) 人氣()