产生n个从x到y的随机不重复非负整数

      精灵般的代码 2007-3-20 22:49

首先看如何产生n个非负不重复随机整数

基本思路:通过循环产生随机数,每一次产生一个数就进行判断,如果该数在数组中已存在就再取一次;如果不存在,就把它存到数组里。

function randomNumbers(max_num, count) {
    k = 0;
//避免数目大于最大取值范围
    if(count>max_num){
        count=max_num
    }
    random_num = new Array();
    while (k<count) {
//取得随机整数。
        random_num[k] = Math.floor(Math.random()*max_num);
        k++;
            for (i=0; i<k-1; i++) {
//判断该数在数组中是否存在
                if (random_num[i] == random_num[k-1]) {
//如果该数在数组中已存在,就再多算一次
                k--;
                break;
               }
           }
        }
return random_num;
}

调用举例:my_random_numbers=randomNumbers(100,5);

-----------------------------------------------------

然后看如何产生n个从x到y的随机不重复非负整数,加近去一个起始值:

function randomNumbers(min_num,max_num, count) {
    k = 0;
    random_num = new Array();
//避免指定的范围小于个数产生问题
   if(count>(max_num-min_num)){
    count=max_num-min_num
    }
    while (k<count) {
//取得随机整数。
        random_num[k] = Math.floor(Math.random()*(max_num-min_num));
        random_num[k]+=min_num
        k++;
            for (i=0; i<k-1; i++) {
//判断该数在数组中是否存在
                if (random_num[i] == random_num[k-1]) {
//如果该数在数组中已存在,就再多算一次
                k--;
                break;
               }
           }
        }
return random_num;
}
调用举例:my_random_numbers=randomNumbers(10,100,5);

标签集:TAGS:随机数
回复Comments() 点击Count()

回复Comments

{commenttime}{commentauthor}

{CommentUrl}
{commentcontent}