以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助] 随机组合出现重复怎么办? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=81505) |
|
-- 作者:农村人 -- 发布时间:2016/2/29 13:05:00 -- [求助] 随机组合出现重复怎么办? 使用如下代码; Dim str() As String = {"1","2","3","4","5","6"} For i As Integer = 1 To 200 \'组合次数 Dim rnum1 As Integer = Rand.Next(str.Length) Dim rnum2 As Integer = Rand.Next(str.Length) Dim temp As String = str(rnum1) str(rnum1) = str(rnum2) str(rnum2) = temp Dim data As String = String.Join("", str) Output.Show(data) Next 组合结果会出现多个重复,请问这如何解决?
|
|
-- 作者:大红袍 -- 发布时间:2016/2/29 14:46:00 -- Dim str() As String = {"1","2","3","4","5","6"} For i As Integer = 1 To 200 For j As Integer = 1 To 5 \'洗牌次数 Dim rnum1 As Integer = Rand.Next(str.Length) Dim rnum2 As Integer = Rand.Next(str.Length) Dim temp As String = str(rnum1) str(rnum1) = str(rnum2) str(rnum2) = temp Next Dim data As String = String.Join("", str) Output.Show(data) Next |
|
-- 作者:农村人 -- 发布时间:2016/3/1 14:49:00 -- 你好,这样仍然会出现重复的组合的 |
|
-- 作者:大红袍 -- 发布时间:2016/3/1 14:50:00 -- 肯定有可能出现重复的,如果不想重复,就用集合记录一下之前的值。 |
|
-- 作者:大红袍 -- 发布时间:2016/3/1 14:53:00 -- Dim str() As String = {"1","2","3","4","5","6"} Dim ls As new List(Of String) For i As Integer = 1 To 200 For j As Integer = 1 To 5 \'洗牌次数 Dim rnum1 As Integer = Rand.Next(str.Length) Dim rnum2 As Integer = Rand.Next(str.Length) Dim temp As String = str(rnum1) str(rnum1) = str(rnum2) str(rnum2) = temp Next Dim data As String = String.Join("", str) If ls.Contains(data) = False Then Output.Show(i & " " & data) Else i -=1 End If Next |
|
-- 作者:农村人 -- 发布时间:2016/3/1 15:21:00 --
|
|
-- 作者:大红袍 -- 发布时间:2016/3/1 15:23:00 -- 随机交换5次,打乱顺序。 |
|
-- 作者:农村人 -- 发布时间:2016/3/1 15:26:00 -- 非常感谢您的耐心解答,
|
|
-- 作者:大红袍 -- 发布时间:2016/3/1 15:27:00 -- 哦
Dim str() As String = {"1","2","3","4","5","6"} |
|
-- 作者:农村人 -- 发布时间:2016/3/1 16:37:00 -- OK了,谢谢 大红袍 我现在需要再设置一个字符串,例如:"{"上","中","下","东","南","西","北"} 按照组合数量,有顺序地加入到循环组合, Dim str() As String = {"1","2","3","4","5","6"} Dim ls As new List(Of String)For i As Integer = 1 To 100 \'组合数量 For j As Integer = 1 To 5 \'洗牌次数 Dim rnum1 As Integer = Rand.Next(str.Length) Dim rnum2 As Integer = Rand.Next(str.Length) Dim temp As String = str(rnum1) str(rnum1) = str(rnum2) str(rnum2) = temp Next Dim data As String = String.Join("", str) If ls.Contains(data) = False Then ls.add(data) Output.Show(i & " " & data) Else i -=1 End If Next |