没有重复数字的随机数生成器



我正在尝试创建一个随机数生成器而不重复数字 {0 - 7}。

我在这里收到一个 SEG 错误,我很确定我在那里正确分配了所有内存。我发现偶尔有效的一种解决方案是将随机括号参数大小设置为 9。但是,由于它有一个额外的内存,因此它增加了一个额外的 0。关于如何让我的数组只有 8 的参数大小而没有 SEG 错误的任何想法?

C++中的数组从0开始。因此,您的for循环无效。而不是:

for (int i = 8; i > 0; i--)

它应该是

for (int i = 7; i >= 0; i--)

除此之外,显然没有hehe变量。

8不是

shuffledbracket C++数组的索引0 to N-1的有效索引,在本例中0 to 7,因此您需要修改循环:

for (int i = 7; i >= 0; i--)
           ^^^    ^^^

这引入了另一个问题,因为模量0是未定义的行为:

randnumero = rand()%i;
                   ^^

如果要从[M,N]生成随机数,则可以使用C FAQ条目中的此公式 如何获得一定范围内的随机整数?

M + rand() / (RAND_MAX / (N - M + 1) + 1)

或者您可以使用随机标头并uniform_int_distribution:

std::uniform_int_distribution<int> dist(0, i);

相关内容

  • 没有找到相关文章

最新更新