int a[1000]; for(i=0; i<=999; ++i) a[i]=i; for(i=999; i>=1; --i) swap(a[i], a[rand()%i]); 上面这段代码只需要遍历一次就可以产生这1000个不重复的随机数,它是如何做到的呢?首先第二行按顺 序用0到99填满整个数组;第三行,是随机产生从0到m-2个数组下标,把这个下标的元素值跟m-1下标的元 素值交换,一直进行到下标为1的元素。因此它只需要遍历一次就能产生全部的随机数。 取前50个即可
点赞 5

相关推荐

牛客网
牛客企业服务