以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]关于随机取数的问题  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=47986)

--  作者:pcxjxjhkw
--  发布时间:2014/3/20 19:46:00
--  [求助]关于随机取数的问题

有一数组{"1","2","3","4","5"),现随机取3个数,但要求这3个数相对分开,即不出现123,234,345。如果随机取2个数,也要求这2个数相对分开。

请教大家了,谢谢

 

 


--  作者:Bin
--  发布时间:2014/3/21 8:41:00
--  



Dim slist As new List(of String)
Do While slist.count<2
    Dim s As Integer = Rand.Next(1,5)
    If slist.Contains(s)=False Then
      If slist.count>0 Then
        If (slist(0)-s)>1 OrElse (slist(0)-s)<-1 Then
          slist.Add(s)
        End If
      Else
        slist.Add(s)
      End If
    End If
Loop
Dim str As String
For Each s As String In slist
    str=str & s
Next
MessageBox.show(str)

--  作者:pcxjxjhkw
--  发布时间:2014/3/21 9:32:00
--  

谢谢,那如果要随机取3个呢

 


--  作者:狐狸爸爸
--  发布时间:2014/3/21 11:53:00
--  

取三个:

 

Dim vals() As String =  {"1","2","3","4","5"}
Dim str As String  = ""
Do
    Dim idx As Integer = rand.Next(0,vals.Length)
    If str.Contains(vals(idx)) = False  Then
        str = str & vals(idx)
    End If
Loop While str.Length < 3
Return str

 

 

你去多少个都行,你要做的将下面的3改为其他数字:

 

Loop While str.Length < 3

 

当然3不能大于数组的长度


--  作者:pcxjxjhkw
--  发布时间:2014/3/23 18:12:00
--  [求助]集合 最小取值
再请教大家一问题: 有一集合{星期一|32,星期二|37,星期三|32,星期四|78}。根据每天后的数值求出最小值并返回是星期几? 先谢过了?
--  作者:y2287958
--  发布时间:2014/3/23 18:49:00
--  
每天后的数值”是何意?
--  作者:pcxjxjhkw
--  发布时间:2014/3/23 19:40:00
--  
如、周一||32中的32
--  作者:lsy
--  发布时间:2014/3/23 20:12:00
--  

Dim str() As String = {"星期一|32","星期二|37","星期三|32","星期四|78"}
Dim lst As New List(Of String)
For i As Integer = 0 To Str.Length - 1
    If i = 0 Then
        lst.Add( str(i).Split("|")(1) )
    Else
        If str(i).Split("|")(1) < lst(0) Then
            lst(0) = str(i).Split("|")(1)
        End If
    End If
Next
Output.Show("最小值:" & lst(0))
For i As Integer = 0 To Str.Length - 1
    If str(i).Contains(lst(0)) Then
        Output.Show("最小值对应的星期数:" & str(i).Split("|")(0))
    End If
Next