随机生成100内的10个整数运行?
随机生成100个两位整数,并统计出其中小于等于40、大于40且小于等于70及大于70的数据个数。
解,此题VB代码如下:
Option Base 1
Private Sub Form_Click()
Dim a(100) As Integer, i As Integer, m As Integer, n As Integer, k As Integer
Cls'先清屏
Print "生成100个两位随机整数"
For i = 1 To 100
a(i) = Int(Rnd * 90) + 10
Print a(i);
If i Mod 10 = 0 Then Print '一行只输出10个
m = 0: n = 0: k = 0
For i = 1 To 100
If a(i) <= 40 Then
m = m + 1
ElseIf a(i) > 40 And a(i) <= 70 Then
n = n + 1
Else
k
Print "统计情况:"
Print "小于等于40的数有"; m
Print "小于等于70的数有"; n
Print "大于70的数有"; k
End Sub
于等于70的数有"; n
Print "大于70的数有"; k
End Sub
运行程序,点击窗体,此题程序运行效果图如下:
Random 的性能问题:
使用 Random 类时,为了避免重复创建的开销,将实例化好的 Random 对象设置为我们所使用服务对象的属性或静态属性,这在线程竞争不激烈的情况下没有问题,但在一个高并发的 web 服务内,使用同一个 Random 对象可能会导致线程阻塞。
Random 的随机原理是对一个”随机种子”进行固定的算术和位运算,得到随机结果,再使用这个结果作为下一次随机的种子。在解决线程安全问题时,Random 使用 CAS 更新下一次随机的种子,可以想到,如果多个线程同时使用这个对象,就肯定会有一些线程执行 CAS 连续失败,进而导致线程阻塞。