【发布时间】:2019-03-24 19:37:45
【问题描述】:
我正在尝试生成 10,000 个 1 到 20,000 范围内的唯一随机整数以存储在 BST 中,但不确定执行此操作的最佳方法。
我看到了一些关于如何使用数组或向量的好建议,但不适用于 BST。我有一个contains 方法,但我不相信它会在这种情况下工作,因为它用于搜索并返回关于找到所需数字需要多少次尝试的结果。下面是我得到的最接近的,但它不喜欢我的 == 运算符。使用数组并将数组存储在 BST 中会更好吗?或者有没有更好的方法来使用下面的代码,以便在生成数字时将它们直接存储在树中?
for (int i = 0; i < 10000; i++)
{
int random = rand() % 20000;
tree1Ptr->add(random);
for (int j = 0; j < i; j++) {
if (tree1Ptr[j]==random) i--;
}
}
【问题讨论】:
-
en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle 唯一的数字几乎按照定义不是随机的。
-
这对我来说似乎是两个不同的问题。插入二叉搜索树并创建不在树中的数字似乎无关。你使用什么类型的容器应该不会有什么不同。
-
无论集合是否包含 x,collection.contains(x) 方法不应该返回一个二进制值吗?您的变体没有什么意义。
-
" 它不喜欢我的 == 运算符" 是那个还是
operator[]上的tree1Ptr是什么?
标签: c++ random binary-search-tree unique random-seed