摘要: 如何产生不重复的随机数?最容易想到的方法,是逐个产生这些随机数,每产生一个,都跟前面的随机数比较,如果重复,就重新产生。这是个很笨的方法,且比较次数呈线性增长,越往后次数越多。其实这些比较是多余的,完全可以不进行比较,只要反过来,按顺序产生这些数,但随机产生它们的位置。例如下面产生100个100以内不重复随机数的代码:C代码:inta[100];for(i=0;i<=99;++i)a[i]=i;for(i=99;i>=1;--i)swap(a[i],a[rand()%i]);上面这段代码只需要遍历一次就可以产生这100个不重复的随机数,它是如何做到的呢?首先第二行按顺序用0到99填 阅读全文
posted @ 2012-09-17 20:22 易木 阅读(486) 评论(0) 推荐(0) 编辑