測試資料之自動生成

2022-01-15 05:20:40 字數 1987 閱讀 6123

最近在學習排序演算法的時候,需要利用程式自動生成測試資料,**和思路整理在這篇文章裡面。

文章**於 github,網速不佳的朋友請點我看原文。

順便軟廣一下個人技術小站:歡迎常來 ♪(∇*)

因為會被很多排序演算法呼叫,所以,資料自動生成**應該放在.h標頭檔案中。為了防止命名衝突,函式被封裝在「命名空間」中(**中命名空間是:sorttesthelper)。

而對於排序來說,自動生成資料的型別需要有以下幾種:

[a, b]範圍內的n個隨機資料,比如:1、2、100、-1...

n個近乎有序的資料,比如:1、2、3、7、5、6、4...

n個近乎相同的資料,比如:1、1、1、2、2、2、2、2...

除此之外,還需要陣列淺拷貝、列印的函式,以及驗證是否排序成功和測試排序時間的函式。

srand(time(null))rand(): 設立隨機種子,生成隨機數

clock(): 用來演算法執行前後的計算時鐘週期差值,再除以clocks_per_sec即為執行秒數。

函式式程式設計 : 使用函式指標,方便呼叫和測試排序函式

其中rand()函式能生成 0 到max_int之間的隨機整數。如果想生成[0, n)之間的整數,需要取餘操作:int x = rand() % n;;如果想生成[left, right]之間的整數,需要進行偏移:int x = rand() % (right - left + 1) + left;

//

// created by godbmw.com on 2018/9/11.

//#ifndef basesort_sorthelper_h

#define basesort_sorthelper_h

#include #include #include #include using namespace std;

namespace sorttesthelper

return arr;

}// 生成[0, n)範圍內n個近乎有序的隨機數

template t* generatenearlyorderedarray(int n, int swap_times)

// 隨機選取其中2個資料,交換 swap_times 次

for(int i = 0; i < swap_times; i++)

return arr;

}template t* copyarray(t arr, int length)

template void printarray(t arr, int length)

cout<< endl;

return;

}template bool issorted(t arr, int length)

}return true;

}// 第三個引數是函式指標,傳入後,可以在本函式內執行被傳入的函式

template void testsort(t arr, int length, void(*sort)(t, int), string name)

}#endif //basesort_sorthelper_h

我們沒有實現第二部分所說的 生成n個近乎相同的資料,比如:1、1、1、2、2、2、2、2...。因為可以借助generaterandomarray函式,比如:sorttesthelper::generaterandomarray(10000, 0, 10)。生成[0,10]區間內 10000 個整數,那麼不就是近乎相同的嗎?

使用sql自動生成測試資料

在進行 編寫的時候,常常會用到大量的測試資料。手動的進行測試資料的編寫費時費力,下面給大家介紹乙個使用sql自動生成測試資料的方法。create table datatable id int 11 not null auto increment,username varchar 255 not nu...

測試資料生成

目的 sql server 搭建日誌傳輸,模擬災難轉移,在主庫上不斷生成測試資料,模擬生產環境。生成測試資料指令碼 表結構 if table dbo.t1 exists,then drop it if object id dbo.t1 u is not null drop table dbo.t1 ...

快速生成測試資料

select rownum as id,to char sysdate rownum 24 3600,yyyy mm dd hh24 mi ss as inc datetime,trunc dbms random.value 0,100 as random id,dbms random.string...