| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1690 人关注过本帖
标题:[求助]请问如何可以生成不重复的随机数?
只看楼主 加入收藏
寻找
Rank: 2
等 级:论坛游民
帖 子:132
专家分:19
注 册:2007-3-2
结帖率:100%
收藏
 问题点数:0 回复次数:12 
[求助]请问如何可以生成不重复的随机数?

Dim t1 As Integer
Dim t(9) As String
For t1 = 0 To 10
t(t1) = Int((100 - 1 + 1) * Rnd + 1)
List1.AddItem t(t1)
Next t1

问题一:如何可以在100里面生成10个不重复的随机数。并连续的生成10次。

思路我想是,定义一个数组,然后在1到100的随机数里AddItem 10个的数组
但不知道该如何一编,请高手指教!帮忙!谢谢!

[此贴子已经被作者于2007-7-3 13:25:35编辑过]

搜索更多相关主题的帖子: 随机数 定义 Rnd Int 
2007-07-03 13:23
随风逐流
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:passerby
等 级:版主
威 望:8
帖 子:4054
专家分:271
注 册:2007-6-13
收藏
得分:0 
Randomize
i = Int((100 - 1 + 1) * Rnd + 1) 'Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

[url=http://www./html/6/6694/]极道金丹[/url][url=http://www./html/2/2849/]九阴九阳[/url][url=http://www./html/2/2596/]凡人修仙传[/url]
2007-07-03 13:29
寻找
Rank: 2
等 级:论坛游民
帖 子:132
专家分:19
注 册:2007-3-2
收藏
得分:0 
以下是引用随风逐流在2007-7-3 13:29:06的发言:
Randomize
i = Int((100 - 1 + 1) * Rnd + 1) 'Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

谢谢楼上的朋友,但还是有重复的随机数出现~
有没有办法没有重复的?

2007-07-03 13:44
随风逐流
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:passerby
等 级:版主
威 望:8
帖 子:4054
专家分:271
注 册:2007-6-13
收藏
得分:0 

Private Sub Command1_Click()

Dim t1, t2 As Integer
Dim t3 As String
Dim t(9) As String
For t1 = 0 To 9
Randomize
t2 = Int((100 - 1 + 1) * Rnd + 1)
List1.AddItem abc(CStr(t2), t)
Next t1

End Sub

Private Function abc(a As String, b() As String) As String
Dim i As Integer
Dim bol As Boolean
bol = False
For i = LBound(b) To UBound(b)
If b(i) = a Then
bol = True
Exit For
End If
Next
If bol = False Then
abc = a
Else
Randomize
abc = abc(CStr(Int((100 - 1 + 1) * Rnd + 1)), b)
End If
End Function
试试


[url=http://www./html/6/6694/]极道金丹[/url][url=http://www./html/2/2849/]九阴九阳[/url][url=http://www./html/2/2596/]凡人修仙传[/url]
2007-07-03 14:05
寻找
Rank: 2
等 级:论坛游民
帖 子:132
专家分:19
注 册:2007-3-2
收藏
得分:0 
以下是引用随风逐流在2007-7-3 14:05:32的发言:

Private Sub Command1_Click()

Dim t1, t2 As Integer
Dim t3 As String
Dim t(9) As String
For t1 = 0 To 9
Randomize
t2 = Int((100 - 1 + 1) * Rnd + 1)
List1.AddItem abc(CStr(t2), t)
Next t1

End Sub

Private Function abc(a As String, b() As String) As String
Dim i As Integer
Dim bol As Boolean
bol = False
For i = LBound(b) To UBound(b)
If b(i) = a Then
bol = True
Exit For
End If
Next
If bol = False Then
abc = a
Else
Randomize
abc = abc(CStr(Int((100 - 1 + 1) * Rnd + 1)), b)
End If
End Function
试试

谢谢楼上的朋友~不过还是有重复的,感觉重复的随机数的是减少了一点~

2007-07-03 14:21
随风逐流
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:passerby
等 级:版主
威 望:8
帖 子:4054
专家分:271
注 册:2007-6-13
收藏
得分:0 

不会吧?还有重复的?
不可能吧?我用递归的方法,如果有重复就重新生成,直到不重复。怎么会还有重复的?


[url=http://www./html/6/6694/]极道金丹[/url][url=http://www./html/2/2849/]九阴九阳[/url][url=http://www./html/2/2596/]凡人修仙传[/url]
2007-07-03 14:25
随风逐流
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:passerby
等 级:版主
威 望:8
帖 子:4054
专家分:271
注 册:2007-6-13
收藏
得分:0 

不好意思 有个地方改下。
Private Sub Command1_Click()

Dim t1, t2 As Integer
Dim t3 As String
Dim t(9) As String
List1.Clear
For t1 = 0 To 9
Randomize
t2 = Int((100 - 1 + 1) * Rnd + 1)
t2 = abc(CStr(t2), t)
List1.AddItem t2
t(t1) = t2
Next t1

End Sub


[url=http://www./html/6/6694/]极道金丹[/url][url=http://www./html/2/2849/]九阴九阳[/url][url=http://www./html/2/2596/]凡人修仙传[/url]
2007-07-03 14:33
寻找
Rank: 2
等 级:论坛游民
帖 子:132
专家分:19
注 册:2007-3-2
收藏
得分:0 
以下是引用随风逐流在2007-7-3 14:25:28的发言:

不会吧?还有重复的?
不可能吧?我用递归的方法,如果有重复就重新生成,直到不重复。怎么会还有重复的?

是的,有时没有重复,有时还是会有重复,我测试过了!

2007-07-03 14:34
随风逐流
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:passerby
等 级:版主
威 望:8
帖 子:4054
专家分:271
注 册:2007-6-13
收藏
得分:0 

不好意思啊~~我一时忘记把数存到数组 导致没检查成功


[url=http://www./html/6/6694/]极道金丹[/url][url=http://www./html/2/2849/]九阴九阳[/url][url=http://www./html/2/2596/]凡人修仙传[/url]
2007-07-03 14:36
寻找
Rank: 2
等 级:论坛游民
帖 子:132
专家分:19
注 册:2007-3-2
收藏
得分:0 

谢谢楼上的朋友热心帮忙~现在我连续试了很多次,是没有重复了~
谢谢楼上朋友的帮忙!
另外请教高手朋友红色字部分的意思是怎么理解?谢谢!

Private Sub Command1_Click()

Dim t1, t2 As Integer
Dim t3 As String
Dim t(9) As String
For t1 = 0 To 9
Randomize
t2 = Int((100 - 1 + 1) * Rnd + 1)
List1.AddItem abc(CStr(t2), t)
Next t1

End Sub

Private Function abc(a As String, b() As String) As String
Dim i As Integer
Dim bol As Boolean
bol = False
For i = LBound(b) To UBound(b)
If b(i) = a Then
bol = True
Exit For
End If
Next
If bol = False Then
abc = a
Else
Randomize
abc = abc(CStr(Int((100 - 1 + 1) * Rnd + 1)), b)
End If
End Function

2007-07-03 14:48
快速回复:[求助]请问如何可以生成不重复的随机数?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025965 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved