我正在尝试创建一个随机数生成器而不重复数字 {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);