❶ c語言如何隨機打亂數組
int a[] = {3,5,7,1,4};
// 本程序考慮時間復雜度最小情況的亂序演算法,O(t)=len-1
// 演算法悉鍵純模仿彩票搖號,從全集中先取一個為第一位,再在剩餘集合睜咐中取出一個為第2位,...
// 直至最後一個,只是考慮空間利用,已排序集合利用全集的空間。
int len=sizeof(a); // 全集元素數量
srand(unsigned(time(NULL))); // 搖號機准備
for(int i=len;i>1;i--) // 從全集開始搖號,直至只剩一亮褲個,已排在最後
{
int cur=len-i+(rand()%i); // 在剩餘集合中搖號
int tmp=a[len-i]; // 當前序號位置挪空
a[len-i]=a[cur]; // 搖出的綵球放入當前序號
a[lcur]=tmp; // 放好剩餘的綵球
}
❷ C語言中如何將數組亂序
#include<stdio.h>薯嫌陸
#include<stdlib.h>
#include<math.h>數頃
#include<time.h>
int main()
{
int a[] = {3,5,7,1,4};
int n=5;
int i,j,T=1000,tmp;
srand(unsigned(time(NULL)));
while(T--)
{
i=rand()%n;
j=rand()%n;
tmp=a[i];
a[i]=a[j];
a[j]=tmp;
}
for(i=0;i<n;i++)printf("者賀%d ",a[i]);
puts("");
return 0;
}
❸ C語言有什麼辦法把一定范圍里的數子打亂順序
1,你先建或檔乎者產生<行悔悉從小前衡到大排的>的數放一個數組中.原牌x個.
2,產生0到x-1的隨機值x個,不要重復.用來做原數組的下標取對應的值,再放入新數組中,
3,輸出新組.洗的新牌.