如:
我想返回1-10的随机数!
但系我又想返回80%是1-5的数..我应该如何做呢.??
各位帮帮忙啊./??

解决方案 »

  1.   

    呵呵容易,用Rnd函数可以实现:
    生成1-5的随机数,判断该数,
    如果是1-4,生成1-5的数的随机数
    如果是5,生成6-10的数的随机数
      

  2.   

    '使用Rnd的例子
    Randomize '随机数生成器初始化
    MyValue = Int((5 * Rnd) + 1)  '生成1到5的随机数
      

  3.   

    自己编个函数(数学术语)映射值域就行了dim f as single
    dim n as longf = rnd()
    if f<=0.8 then
        n = int(f*6.25 + 1) '(x / 0.8) * 5 = 6.25
    else
        n = int((f-0.8)*25 + 1) ' (x / 0.2) * 5 = 25
    end if
      

  4.   

    忘了+5dim f as single
    dim n as longf = rnd()
    if f<=0.8 then
        n = int(f*6.25 + 1) '(x / 0.8) * 5 = 6.25
    else
        n = int((f-0.8)*25 + 1) + 5 ' (x / 0.2) * 5 = 25
    end if
      

  5.   

    (x / 0.8) * 5 = 6.25x是在[0,0.8)区间的数
    除以0.8后变成[0,1)区间
    然后乘以5,变成[0,5)区间
    再取整,值域变成{0,1,2,3,4}
    最后+1,值域是{1,2,3,4,5}
    至于
    n = int((f-0.8)*25 + 1) + 5 ' (x / 0.2) * 5 = 25
    最后+5是为了将值域映射到{6,7,8,9,10}
      

  6.   

    6.25
    25又是怎样来的啊.
    求学!
    -----------------------------------------------
    (x / 0.8) * 5 = x * 6.25
    (x / 0.2) * 5 = x * 25优化代码时出现的
      

  7.   

    (x / 0.8) * 5 = 6.25x是在[0,0.8)区间的数
    除以0.8后变成[0,1)区间
    然后乘以5,变成[0,5)区间
    再取整,值域变成{0,1,2,3,4}
    最后+1,值域是{1,2,3,4,5}
    =======================
    我觉得倒不如先确定区间,然后直接在该区间的值域里取值更方便:
    Private Sub Command1_Click()
    Randomize
    Dim f As Single
    Dim n As Long
    Dim count As Long
    f = Rnd()
    If f <= 0.8 Then
        n = Int(Rnd * 5 + 1)
    Else
        n = Int(Rnd * 5 + 6)
    End If
    End Sub