【发布时间】:2018-09-08 05:52:02
【问题描述】:
所以我试图创建一个由 4 个项目组成的数组,随机填充 4 个唯一数字。目前,我有一个非常长的 while 循环,它检查数组中的每个值,如果它们相同,则不断重复。它的编码真的很糟糕,我想知道你们是否可以帮助我找出更好的方法? 这是我目前拥有的。
int array[4];
while(array[0] == array[1] || array[1] == array[2] || array[2] == array[3] || array[0] == array[2] || array[0] == array[3] || array[1] == array[3])
{
array[0] = rand() % 20;
array[1] = rand() % 20;
array[2] = rand() % 20;
array[3] = rand() % 20;
}
【问题讨论】:
-
对the set data structure做一些研究。
-
为什么要重新滚动所有值,例如只有两个是相同的?
-
@Someprogrammerdude 很有趣,但请帮助我了解它如何支持解决方案。假设一个实现良好的集合可用,它如何支持有效地创建四个不同的随机数? IE。比数组更高效或更简单。
-
在伪代码中:
while (size_of_set() < N) { insert_into_set(get_random_value()); }如果你翻译成真实的代码,那么之后你保证有一组N唯一的随机数。更容易理解逻辑,不需要过多的条件,并且可以很好地扩展(代码方面)N可以是4或10000并且代码不会改变。 -
@Someprogrammerdude 我以前从未听说过或使用过集合,如何检查集合中的值?和数组一样吗?