主题:得出的随机数怎么让它不重复?
mahua1130
[专家分:0] 发布于 2008-06-26 17:56:00
每次随机得出1-10中的三个数,但不能让它重复.
怎么做到?
还有就是 让最新得到的三个数不与前面得出的三个数相同。
怎么做呢?
我只会得出随机数..........
麻烦大家给教一下。谢谢!
回复列表 (共11个回复)
沙发
snyga [专家分:1480] 发布于 2008-06-26 18:28:00
'调用: RndArry 要打乱的数组,打乱的数量 -1则为全部打乱(默认)
'返回: string() 打乱后的数组
Public Function RndArry(ByVal pArry, Optional RndCount As Long = -1) As String()
Dim p() As String
Dim k As String
Dim k1 As String
Dim i As Long
On Error GoTo err1
p = Split(vbNullString)
If RndCount < 0 Or RndCount > UBound(pArry) Then RndCount = UBound(pArry)
ReDim p(LBound(pArry) To RndCount)
For i = LBound(p) To UBound(p)
Randomize
k = Int((UBound(pArry) - i + 1) * Rnd + i)
p(i) = pArry(k)
pArry(k) = pArry(i)
Next
err1:
RndArry = p
End Function
板凳
我是大喊三 [专家分:3010] 发布于 2008-06-26 19:12:00
看看有没有更好的办法
3 楼
mahua1130 [专家分:0] 发布于 2008-06-26 19:29:00
有没有办法让它显示在几个Label中,每个Label中显示一个数。
可不可以 在我定义的几个数中随机得出 几个数,保证几个数不重复呢?
4 楼
老大徒伤悲 [专家分:29120] 发布于 2008-06-26 21:05:00
[quote]有没有办法让它显示在几个Label中,每个Label中显示一个数。[/quote]这个问题,很简单。
for i=0 to n
label1(i)=x(i)
next i
产生n个不同的整数
i=0
do
x(i)=int(rnd*m)
ok=1
for j=0 to i-1
if x(i)=x(j) then
ok=0
exit for
endif
if ok then
if i=n then exit do
i=i+1
endif
loop
5 楼
cxj98 [专家分:40] 发布于 2008-06-27 07:29:00
这个最简单不过了。
Private Sub Form1_Load()
Radonmize '在窗体加载前加上这句话,每次生成的随机数都会不一样。
End Sub
伤心软件网
http://www.sadsoft.net
人生如程序,我用代码写人生;
伤心的软件,我最悲伤的人生。
6 楼
guoyong_cy [专家分:3050] 发布于 2008-07-07 19:40:00
其实这些还不够,因为每次程序启动都是一样的,可以让数和时间相关,那样才完全随机
7 楼
我是大喊三 [专家分:3010] 发布于 2008-07-08 20:55:00
似乎VB的RANDOMIZE已经是默认RANDOMIZE TIMER句式了。
8 楼
老大徒伤悲 [专家分:29120] 发布于 2008-07-09 13:45:00
你们没有搞清楚。楼主的意思是,随机数产生多了,例如20个,也许里面有相同的,他要保证这20个不一样。
9 楼
leaoko [专家分:20] 发布于 2008-07-21 19:26:00
昨晚我也遇到类似问题,用它作为一张数据表的ID字段(不能重复),后来想到用当前
日期和时间转换来一个数值来乘以一个随机数来解决了,你也可以参考此类方法来实现.
10 楼
我是大喊三 [专家分:3010] 发布于 2008-07-21 21:30:00
楼上,让ID不重复,不必这样作吧?
我来回复