gpt4 book ai didi

c - 使用模运算符在 C 中生成随机整数的问题

转载 作者:行者123 更新时间:2023-11-30 15:22:41 24 4
gpt4 key购买 nike

我编写了一个函数,旨在使用模运算符输出 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(含)和 sum(含)之间的随机数。但是,您没有提供完整的代码,因此无法从有限的代码中了解完整 comp_output 函数的真正目的是什么。

请注意,使用 rand() 实现的低位可能不一定是一个好主意。许多系统上的 rand()%2 提供交替序列 0, 1, 0, 1, 0, 1, 0, 1, ... 真正的解决办法显然是使用更好的随机数生成器,例如 Mersenne Twister ( http://en.wikipedia.org/wiki/Mersenne_twister )或PCG(http://www.pcg-random.org/)。

关于c - 使用模运算符在 C 中生成随机整数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29128632/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com