快速生成随机数等等

1.生成k个[0,n]区间内的随机数

No1.

var arr=[],tmp;
for i[0,n)
    arr[i]=0;
do{
    tmp = rnd(k);
    if arr[tmp]=0{
        arr[tmp]=1;
        k--;
    }
}while(k>=0)

缺点:不能确定循环次数,当n和k相当大的时候,速度慢!

No2.

var arr=[];
for i[0,n)
    arr[i]=i;
for i[0,k)
    swap(i,rnd(k));

需要额外的方法来交换,不过运行次数为k.

posted @ 2010-11-10 21:55  陈锐达  阅读(216)  评论(0编辑  收藏  举报