VB随机生成一个只有0和1的m行n列的数组。

来源:百度知道 编辑:UC知道 时间:2024/06/03 17:19:50
每一列中只有一个元素值为1,每行中数值为1的元素数要尽可能相近,每行中为1的元素尽可能均匀分布,相邻列中的两个为1的元素不可位于同一行。
比如3行8列的一个随机数组。因为每列有且只有一个元素为1,所以总共有8个1。8/3=2.7。每行中数值为1的元素数要尽可能相近,则每行可以取2个或者3个1。且每行为1的元素以保证均匀分布于一行。例: 0 1 0 0 1 0 0 1 3个1
0 0 1 0 0 1 0 0 2个1
1 0 0 1 0 0 1 0 3个1
相邻两列中的1不在同一行,且每行中为1的元素尽可能均匀分布在该行。

我来做

Private Sub Command1_Click()
Cls
Dim m As Integer, n As Integer, a, b, i As Integer, j As Integer
m = Val(Text1.Text)
n = Val(Text2.Text)
Randomize
ReDim a(m, n)
ReDim b(m)

For i = 1 To m
sign:
b(i) = Int(Rnd * m) + 1
For j = 1 To i - 1
If b(i) = b(j) Then GoTo sign
Next
Next i

For i = 1 To m
For j = 1 To n
If (j - b(i)) Mod m = 0 Then
Me.ForeColor = CLng(250) * 256
a(i, j) = 1
Else
a(i, j) = 0
Me.ForeColor = 0

End If
Print a(i, j);
Next
Print
Next
End Sub

呵呵,是不是这样啊??