數組的隨機打亂
本篇隨筆介紹一下一個小技巧:數組的隨機打亂。
有兩種方式,第一種是用STL里的random_shuffle函數,第二種是手寫。
第一種:STL
就是介紹一下random_shuffle函數的用法。
傳兩個參數,表示數組的首尾元素即可。
random_shuffle(a+1,a+n+1);//打亂a數組(1-n)。
第二種:手寫
手寫函數比較簡單,但是思想挺巧妙的,是一種隨機化算法。
直接放代碼,大家應該看就能看明白。
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=1;i<=n;i++)
swap(a[i],a[(rand()%i)+1]);
}
差不多就這些。別怪我水博。