注册 登录
编程论坛 VB6论坛

点击招钮在右边的text7显示结果

wenchen1987 发布于 2015-07-01 20:55, 621 次点击
只有本站会员才能查看附件,请 登录

求高手指点一下,我是VB菜鸟
如图,
上面是输入上期开奖号码
下面两个按钮是“随机选号”“掐指神算”
我想要的效果是,按随机选号,然后1-50随机选出6个号码在右边TEXT7里或者弹出一个新的窗口显示结果,
或者掐指神算,同样,在右边TEXT7里或者弹出一个新的窗口显示结果,但显示的结果同样是随机排序的,
如我输入
 ?n1+1
? n2+2
?n1+3
...
但是全部公式都输入完成之后,在右边TEXT7里不按顺序显示结果,随机排序
请高手请点
9 回复
#2
lianyicq2015-07-02 09:20
回复 楼主 wenchen1987
产生6个互不相等的1-50内的数
程序代码:
Private Sub Command1_Click()
  Dim i As Integer
  Dim j As Integer
  Dim a(1 To 6) As Integer
  Randomize
  For i = 1 To 6
    a(i) = Int((50) * Rnd + 1)
    For j = 1 To i
      If j <> i Then
        While (a(i) = a(j))
          a(i) = Int((50) * Rnd + 1)
        Wend
      End If
    Next
    Text1.Text = Text1.Text & a(i) & " "
  Next
  Text1.Text = Text1.Text & vbCrLf
End Sub
第2个按钮是不是手动输入6个数,再自动排序?
如果是这样,建1个数组a(1 to 6),分别赋值1 to 6。
进行6次选择,每次选择后,剔除被选元素,得到新数组,再进行下一次随机选择。
第n次(n是1至6)在1至7-n中随机选1个数。
还有一个办法,先全排列1至6,总共720种,再在720种里随机得到你需要的互不相等的组合的种数。
不知道n1+1 n2+2 n1+3是什么意思。

[ 本帖最后由 lianyicq 于 2015-7-2 09:24 编辑 ]
#3
wenchen19872015-07-02 15:15
回复 2楼 lianyicq
是这样的,第二个按钮是手工的
我想要的效果是
如:我输入n1=1,n2=2,n3=3,n4=4,n5=5,n6=6
然后按下第二个按钮,在右边text7显示我输入的公式的结果,如我输入“下期开奖号码可能会出:”n1+1,n1-1......一直到n6+1,n6-1,
但是显示的结果不是n1+1-n6+1这样按顺序的,是随机顺序的,如有可能是n6+1,n6-1,也有可能是先n3或n4+1-1,这样在效果
#4
wenchen19872015-07-02 15:35
回复 2楼 lianyicq
谢谢高手指点,第一个是我要的效果,但是如果可以,帮我回复一下第二个按钮效果,我的分全给你了
#5
lianyicq2015-07-02 16:22
回复 3楼 wenchen1987
..
如:我输入n1=1,n2=2,n3=3,n4=4,n5=5,n6=6
然后按下第二个按钮,在右边text7显示我输入的公式的结果,如我输入“下期开奖号码可能会出:”n1+1,n1-1......一直到n6+1,n6-1,
...

什么是输入的公式?是不是对于每个输入的n有一个n+1和n-1。
比如输入3,8,14,17,36,42
结果包括2,4,7,9,13,18,35,37,41,43,然后再随机排列这组输出?

#6
wenchen19872015-07-03 15:18
回复 5楼 lianyicq
对对对,就是这样的效果,但全部输入完之后,要点击按钮然后是在TEXT7显示结果的
#7
lianyicq2015-07-03 16:20
回复 6楼 wenchen1987
好歹把自己写的代码贴上来看看。
#8
lianyicq2015-07-03 16:49
还想到一个用交换的办法来随机打乱有序数组,效率更高。
...
这样做可以打乱数组,但仔细分析了一下,各种可能组合机会不均等,不适合。


[ 本帖最后由 lianyicq 于 2015-7-3 17:08 编辑 ]
#9
wenchen19872015-07-03 19:33
回复 7楼 lianyicq
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录

再简单的说吧
如,我想让TEXT1.TEXT=A
TEXT2.TEXT=B
,然后单击按钮,在
TEXT3.TEXT里示的结果是
a+b,a-b,a+1,b-1然后每个结果都用“,”隔开
我现在没有分数了,如果有,我一定会把所有分数都给你
#10
lianyicq2015-07-04 10:29
回复 9楼 wenchen1987
写了一个输出乱序的过程
Sub Output(x() As Integer)
  Dim i As Integer
  Dim j As Integer
  Dim temp As Integer
  For i = 0 To UBound(x)
    Randomize
    j = Int(Rnd * (UBound(x) + 1))
    temp = x(i)
    x(i) = x(j)
    x(j) = temp
  Next
End Sub

自己完善避免输出相同的情况。
1