回 帖 发 新 帖 刷新版面

主题:得出的随机数怎么让它不重复?

每次随机得出1-10中的三个数,但不能让它重复.
怎么做到?
还有就是 让最新得到的三个数不与前面得出的三个数相同。

怎么做呢?
 我只会得出随机数..........
麻烦大家给教一下。谢谢!

回复列表 (共11个回复)

沙发

'调用: 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

板凳

看看有没有更好的办法

3 楼

有没有办法让它显示在几个Label中,每个Label中显示一个数。
可不可以 在我定义的几个数中随机得出 几个数,保证几个数不重复呢?

4 楼

[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 楼

这个最简单不过了。

Private Sub Form1_Load()
    Radonmize '在窗体加载前加上这句话,每次生成的随机数都会不一样。
End Sub

伤心软件网
http://www.sadsoft.net

人生如程序,我用代码写人生;
伤心的软件,我最悲伤的人生。

6 楼

其实这些还不够,因为每次程序启动都是一样的,可以让数和时间相关,那样才完全随机

7 楼

似乎VB的RANDOMIZE已经是默认RANDOMIZE TIMER句式了。

8 楼

你们没有搞清楚。楼主的意思是,随机数产生多了,例如20个,也许里面有相同的,他要保证这20个不一样。

9 楼

昨晚我也遇到类似问题,用它作为一张数据表的ID字段(不能重复),后来想到用当前

日期和时间转换来一个数值来乘以一个随机数来解决了,你也可以参考此类方法来实现.

10 楼

楼上,让ID不重复,不必这样作吧?

我来回复

您尚未登录,请登录后再回复。点此登录或注册