全民一起VBA提高篇 第二十回 随机数变幻莫测,模运算买椟还珠

本文介绍了VBA中关于随机数和模运算的应用,包括使用Mod进行奇偶判断和周期性问题解决,以及Rnd函数生成随机数的技巧。通过实例展示了如何用随机数进行交替染色、简化编程以及模拟抽奖程序,揭示了随机数的初始化和伪随机数的概念。

 

相关知识点

默认属性,range(3,2)默认属性是value,对象赋值要用set

Mod模运算:求余数,可以用于奇偶数判断或者周期性问题

Rnd(): 随机数,返回0-1(包含0,不含1)之间的Double类型随机小数。可选参数为随机序列的生成方式。Int(Rnd()*n),n模运算的值得到0-(n-1)之间的随机数

随机数万能公式:生成[a,b]之间的随机数Int(Rnd()*(b-a+1)+a),包含a和b

伪随机数:过程似乎是随机的,实际上是需要开始值(种子),种子不变生成的随机数也不变。

Randomize:随机数初始化,按照当前的系统的时间作为种子

例1 交替染色

Sub colorize()

     Dim mycolor(3) as long, i as integer, k as integer

     mycolor(0)=vbred: mycolor(1)=vbyellow:mycolor(2)=vbblue: mycolor(3)=vbgreen

     k=1

     i=0

     Do while cells(i,1)<>””

            Cells(i,1).resize(1,4).interior.color=mycolor(k)

            k=k+1

            If k=4 Then k=0

            i=i+1

     Loop

End sub

例2 模运算简化编程

Sub colorize()

     Dim mycolor(3) as long, i as integer,

     mycolor(0)=vbred: mycolor(1)=vbyellow:mycolor(2)=vbblue: mycolor(3)=vbgreen

    

     i=0

     Do while cells(i,1)<>””

            Cells(i,1).resize(1,4).interior.color=mycolor((i-1 ) mod 4) ‘随机数mycolor(Int(Rnd()*4))

           

 

            i=i+1

     Loop

End sub

例4 1-100随机数抽奖

Sub mycheatto() ‘假设1-3是经理50%的概率,4-100是员工

     Dim i as integer

     Rand0mize

     i=rnd()

     If i<0.5 Then

           Range(“C8”).value=Int(Rnd()*3)+1

     Else

            Range(“C8”).value=Int(Rnd(*97))+1

     End If

End Sub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值