予具有式檢查9點的整數,如何使一個 「密鑰生成」 知道式
第一位數字(D1)必須是:1,2,5,6,8或9 最後一個數字( D9)必須是:0或9 9xd1 + 8xd2 + 7xd3 + 6xd4 + 5xd5 + 4xd6 + 3xd7 + 2xd8 + D9模11 = 0
我 「驗證」 鍵,但如何可以生成更多的該知道它是正確的條件?
如何從0到9生成9個不同的整數並在此公式下檢查它們?
感謝您的幫助!
予具有式檢查9點的整數,如何使一個 「密鑰生成」 知道式
第一位數字(D1)必須是:1,2,5,6,8或9 最後一個數字( D9)必須是:0或9 9xd1 + 8xd2 + 7xd3 + 6xd4 + 5xd5 + 4xd6 + 3xd7 + 2xd8 + D9模11 = 0
我 「驗證」 鍵,但如何可以生成更多的該知道它是正確的條件?
如何從0到9生成9個不同的整數並在此公式下檢查它們?
感謝您的幫助!
實現:
Private randGen As New Random()
Function GenNum() As Integer
Dim digits(0 To 8) As Integer
GenNum = 0
Dim checkSum As Integer
digits(0) = randGen.Next(6) + 1
If digits(0) >= 3 Then digits(0) += 2
If digits(0) >= 7 Then digits(0) += 1
checkSum += digits(0) * 9
For d As Integer = 1 To 6
digits(d) = randGen.Next(10)
checkSum += digits(d) * (9 - d)
Next
digits(8) = 9
checkSum += digits(8)
If (checkSum Mod 11) Mod 2 = 1 Then
digits(7) = (11 - (checkSum Mod 11)) \ 2
Else
digits(7) = ((12 - (checkSum Mod 11)) \ 2 + 4) Mod 10
End If
checkSum += digits(7) * 2
If checkSum Mod 11 = 9 Then digits(8) = 0
Dim pow10 As Integer = 1
For d As Integer = 8 To 0 Step -1
GenNum += pow10 * digits(d)
pow10 *= 10
Next
End Function
BlueMonk,你的代碼只是缺少一件事,我試圖做但只是不能... 它必須以0或者9結尾。 – 2014-10-31 10:31:56
@MiguelFigueiredo我認爲我解決了它。 – BlueMonkMN 2014-10-31 17:47:50
我可以幫你生成一個整數從0到9
這裏是如何表單壽LD的樣子:
這裏是代碼:
Public Class Form1
Dim NumRandom As Random = New Random
Dim X, Y, Z As Integer
Private Sub GenerateBUT_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GenerateBUT.Click
Dim a(9), i, j, RN As Integer
Dim flag As Boolean
flag = False
i = 1
a(j) = 1
Do While i <= 9
Randomize()
RN = CInt(Int(9 * Rnd()) + 1)
For j = 1 To i
If (a(j)) = RN Then
flag = True
Exit For
End If
Next
If flag = True Then
flag = False
Else
a(i) = RN
i = i + 1S
End If
Loop
Label1.Text = a(1)
Label2.Text = a(2)
Label3.Text = a(3)
Label4.Text = a(4)
Label5.Text = a(5)
Label6.Text = a(6)
Label7.Text = a(7)
Label8.Text = a(8)
Label9.Text = a(9)
Z = Label4.Text
Y = Label5.Text
X = Z + Y
X = X - Label3.Text
If X > 1 And X < 10 Then
X = NumRandom.Next(1, 7)
If X = 1 Then
Label1.Text = "0"
ElseIf X = 2 Then
Label2.Text = "0"
ElseIf X = 3 Then
Label3.Text = "0"
ElseIf X = 4 Then
Label4.Text = "0"
ElseIf X = 5 Then
Label5.Text = "0"
ElseIf X = 6 Then
Label6.Text = "0"
ElseIf X = 7 Then
Label7.Text = "0"
End If
End If
End Sub
末級
如果是隻有9號,爲什麼不只是蠻力呢? – 2014-10-30 19:37:42
最簡單的答案是生成隨機密鑰,然後根據該公式檢查它們... – Psychemaster 2014-10-30 19:39:54
一種簡單的方法是將每個段生成爲一個字符串,並將它們連接成最終數字。不用猜測,生成的數字將遵循所有規則。一旦它被連接起來,就把它轉換回一個整數。 – JayHach 2014-10-30 19:48:39