第一个for循环中随机函数Rnd()为什么反回的值总一样?

lovelovevb 2005-07-14 10:19:42
Module Module1

Sub Main()
Dim RandomArray(20) As Single
Dim SortedArray(20) As Single
Dim Rndstring As String
Dim Rnds As Single
Dim iCount, jCount, kCount As Integer
Console.WriteLine("产生的随机数列为:")
For iCount = 1 To 20
Rnds = Rnd() * 9999 + 1
Rndstring = Format(Rnds, "###0.00")
Rnds = CSng(Rndstring)
RandomArray.SetValue(Rnds, iCount)
Console.WriteLine(Convert.ToString(RandomArray.GetValue(iCount)) & ",")
Next
'插入法排序
SortedArray(1) = RandomArray(1)
For iCount = 2 To 20
SortedArray(iCount) = RandomArray(iCount)
For jCount = 1 To iCount - 1
If RandomArray(iCount) < SortedArray(jCount) Then
For kCount = iCount - 1 To jCount Step -1
SortedArray(kCount + 1) = SortedArray(kCount)
Next
SortedArray(jCount) = RandomArray(iCount)
Exit For
End If
Next
Next
Console.WriteLine("排好序的数列是:")
For iCount = 1 To 20
Console.WriteLine(Convert.ToString(SortedArray.GetValue(iCount)) & ",")
Next
Console.WriteLine()
'利用数组对象排序
RandomArray.Sort(RandomArray)
Console.WriteLine("排好序的数组是:")
For iCount = 1 To 20
Console.WriteLine(Convert.ToString(RandomArray.GetValue(iCount)) & ",")
Next
Console.WriteLine()
Console.Read()
End Sub

End Module
第一个for循环中随机函数Rnd()为什么反回的值总一样?而有时却又不一样!
...全文
198 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhilunchen 2005-07-15
  • 打赏
  • 举报
回复
需用Randomize初始随机数发生器
AntingZ 2005-07-14
  • 打赏
  • 举报
回复
详情请参考MSDN:

http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vblr7/html/vastmrandomize.asp

http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/vblr7/html/vafctrnd.asp
AntingZ 2005-07-14
  • 打赏
  • 举报
回复
在使用Rnd()之前加上下面的Randomize语句将 Rnd 函数的随机数生成器初始化,并给它一个新的种子值

Console.WriteLine("产生的随机数列为:")
Randomize
For iCount = 1 To 20
...
Next


lovelovevb 2005-07-14
  • 打赏
  • 举报
回复
Module Module1
Function IsPrimeNumber(ByVal pNumber) As Boolean
Dim iFactor As Integer
For iFactor = 2 To Int(Math.Sqrt(pNumber))
If pNumber Mod iFactor = 0 Then
Return False
End If
Next
Return True
End Function
--------------------------------------------------------------------------------------
Sub Main()
Dim NArray(20), PArray(0) As Integer
Dim iCount, Rnds As Integer
Randomize()
Console.WriteLine("生成的10000以内的随机数列是:")
'利用循环生成随机数列,存放在数组中
For iCount = 0 To 20
Rnds = Int(Rnd() * 9998) + 2
NArray.SetValue(Rnds, iCount) '= NArray (iCount) = Rnds
Console.Write(Convert.ToString(NArray.GetValue(iCount)) & ",")
Next
Console.WriteLine()
'利用循环判断数组中的质数
For iCount = 0 To 20
If IsPrimeNumber(NArray.GetValue(iCount)) Then
ReDim Preserve PArray(PArray.GetUpperBound(0) + 1) '将质数添加进数组
PArray.SetValue(NArray.GetValue(iCount), PArray.GetUpperBound(0))
End If
Next
Console.WriteLine("数列中的质数有:{0:###}个", PArray.GetLength(0) - 1)
For iCount = 1 To PArray.GetUpperBound(0)
Console.Write(PArray.GetValue(iCount))
Console.Write(",")
Next
Console.WriteLine()
Console.ReadLine()
End Sub

End Module

这个主函数中第一个for循环中随机函数Rnd()为什么返回的值不一样?

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧