2011-11-02 66 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建议一个哈希表来跟踪重复。 –