首先介紹下產生隨機數的程序:
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
#define MAX 10
int main()
{
int number[MAX]={0};
int i;
srand(unsigned(time(NULL)));
for(i=0;i<MAX;i++)
{
number[i]=rand()%100;
printf("%d ",number[i]);
}
printf("\n");
return 0;
}
srand(unsigned(time(NULL)));用來產生隨機數需要的種子
如果沒有這句代碼,那麼程序每次運行獲得的隨機數序列將相同
number[i]=rand()%100;產生0~99之間的隨機數
下面是我寫的產生(a,b)之間隨機整數的程序,感興趣的可以用算法
知識證明程序的正確性
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
int randomgenator(int num_min,int num_max)
{
srand(unsigned(time(NULL)));
return rand()%(num_max-num_min)+num_min;
}
下面是獲得數組大小的程序:
#include <iostream>
using namespace std;
template <class T>
int getArrayLen(T& array)
{//使用模板定義一個函數getArrayLen,該函數將返回數組array的長度
return (sizeof(array) / sizeof(array[0]));
}
下面是對於給定的序列給出一個隨機排序的整個程序
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
#include <iostream>
using namespace std;
int randomgenator(int num_min,int num_max)
{
//srand(unsigned(time(NULL)));
return rand()%(num_max-num_min)+num_min;
}
template <class T>
int getArrayLen(T& array)
{//使用模板定義一個函數getArrayLen,該函數將返回數組array的長度
return (sizeof(array) / sizeof(array[0]));
}
template <class T>
void randomize_in_place(T& arry)
{
int len=getArrayLen(arry);
int tem;
int tem_index;
srand(unsigned(time(NULL)));
for(int i=0;i<len;i++)
{
tem_index=randomgenator(i,len);
tem=arry[i];
arry[i]=arry[tem_index];
arry[tem_index]=tem;
}
}
int main()
{
int A[10]={1,2,3,4,5,6,7,8,9,10};
int i=0;
for(;i<10;i++)
{
cout<<A[i]<<" ";
}
cout<<endl;
randomize_in_place(A);
i=0;
for(;i<10;i++)
{
cout<<A[i]<<" ";
}
cout<<endl;
return 0;
}
一下是程序運行結果: