具体:在0-100件抽出6个数字,每个数字间差值不小于2.?

解决方案 »

  1.   

    你可以取0-90之间,任取一个数,然后你给一个数加一或二。
    i=1
    a[0]=random(90)
    while (i<6)
    t=random(1)+1
    a[i]=a[i-1]+t
    next
      

  2.   

    a[0]=random(90)
    i=1
    while (i<6)
    a[i]=a[i-1]+random(100-a[i-1]-2*(5-i))
    next
      

  3.   

    dropingleaf(叶孤飞云):
        请问一下VB有random()这个函数吗?并且参数就是其随机取值范围?
      

  4.   

    上面一个算法还是有点毛病的
    a[0]=random(90)
    i=1
    while (i<6)
    t=random(100-a[i-1]-2*(5-i))
    if t<2 then
    a[i]=a[i-1]+2
    else
    a[i]=a[i-1]+t
    end if
    next
      

  5.   

    答:victorycyz(中海)
    我不知道有没有random(i)这个函数,不过这个函数的意思就是取0-i之间的数!
      

  6.   

    请就问题回答,谢谢各位高手,知道的请赐教一二,这个问题对我比较重要!谢谢!to victorycyz(中海) 
    看您的级别是个高手,希望能给点意见!谢谢!!(另 :按照条件 选择随机数正是我需要的。)to dropingleaf(叶孤飞云) 
    你的思路很好,能否就题目给个比较普遍的算法呢 ?谢谢 !
      

  7.   

    to dropingleaf(叶孤飞云) 
    “在制定范围内随机抽出6个数字,而且每个数字间的差值不小于指定数”
        没有规定 前一个数字和后一个数字是否有关系,也就是说不一定是前面的加2 或指定的T,只要不小于指定的T,就是满足条件的数字。
    ....
    t=random(100-a[i-1]-2*(5-i))
    if t<2 then
    a[i]=a[i-1]+2
    else
    a[i]=a[i-1]+t
    end if
    ...
    不是随机选取T,而是随机选取A(i)