我编写了一个函数,该函数旨在使用模数运算符输出1和一个名为sum的变量之间的随机数,并根据随机数的范围分析该值。不过,我在使用该函数时遇到了麻烦:我使用以下代码行输出随机数。random = rand()%sum + 1但是,由于某些原因,我得到的数字非常高,不在该范围内。在调用函数之前,我已经将该函数植入了主程序,所以我不明白为什么它不起作用。有想法该怎么解决这个吗?谢谢!编辑:这是我程序中的功能:int comp_output (int row, int array[][3], int sum) { int random; random = rand()%sum + 1; if (random <= array[row][0]) { return 0; } else if (random >= sum - array[row][2] + 1) { return 2; } else { return 1; }}在调用函数之前先初始化数组,所以这不是问题。我介绍的函数看起来有什么问题吗?感谢到目前为止所提供的帮助! 最佳答案 您的程序没有错。我测试了您的功能,并且确实添加了printf(“%d \ n”,random); ,如果sum为5,则该值可以为1、2、3、4或5,但不能为其他值。我不明白您的问题是什么,但这不在您突出显示的代码行中。它生成介于1(含)和和(含)之间的随机数。但是,您没有提供完整的代码,因此无法从有限的代码中了解完整的comp_output函数的真正目的是什么。请注意,使用rand()实现的低阶位不一定是一个好主意。在许多系统上,rand()%2提供了交替序列0、1、0、1、0、1、0、1 ...真正的解决方法显然是使用更好的随机数生成器,例如Mersenne Twister()或PCG(http://en.wikipedia.org/wiki/Mersenne_twister)。