2011-11-02 67 views
0

我想用正則表達式生成隨機數據集。在vb.net中創建唯一的隨機數據

因此,我有一個像[a-z] {10}這樣的表達式。 我想要生成200.000個數據 - 可能更多(它應該是通用的),每個數據都應該是唯一的。

我該如何實現? 此刻,我有一個算法,它會生成一個隨機字符串,然後在存儲值的數組中搜索,如果字符串已經在那裏,它會重複該過程。否則它將字符串存儲在數組中。

但是,當我有200.000可能的數據,我想200.000不同的數據,它需要一個真正的很長一段時間 1)搜索整個陣列每次迭代... 2)需要大量的迭代,因爲有較少的可能性「打」

+0

這樣做的目的是什麼?你只是想創建測試數據? –

+0

如果數組可以排序,則使用二進制搜索插入/查找值。 – Marc

+0

testdata,right – Tyzak

回答

1

這聽起來像你正在搜索整個陣列,每次你想存儲一個值。您是否考慮過使用帶有鍵/值對的Hash Table

+0

嗨,是的,現在我這樣做! :( - 嗯像一個「哈希映射」 - 例如[az] {7}具有〜8.000.000.000的可能性,這很重要嗎?:> – Tyzak

+0

本質上,使用哈希表存儲的密鑰允許通過如果/當你生成相同的隨機值時,你會發現它比你現在的方法快得多 –

+0

Hmm HashSet(Of String)應該能夠爲你工作得足夠快 – Beku

1

聽起來像你真正需要的是一種產生200.000個獨特的[a-z]{10}字符串,然後是shuffle的方法。

+0

真的是隨機的會有26^10的可能性,我應該產生每種可能性嗎? – Tyzak

+0

如果你想在獨特的字符串中真正的隨機性,我第二個@Rob Haupts建議一個哈希表來跟蹤重複。 –