c语言问题求助 50

代码如下:#include<stdio.h>staticunsignedlongintnext=1;intrand0(void){next=next*1103515245... 代码如下:
#include <stdio.h>
static unsigned long int next =1;
int rand0(void)
{
next=next*1103515245+12345;
return (unsigned int)(next/65536)%32768;
}
int main(void)
{
int count;
for(count=0;count<5;count++)
printf("%hd\n",rand0());
return 0;
}
运行结果是
16838
5758
10113
17515
31051
我不太理解这些结果是怎么得来的?
next=next*1103515245+12345;
return (unsigned int)(next/65536)%32768;
这一句也理解不了,求大佬解疑答惑。
展开
 我来答
syht2000
高粉答主

2020-07-10 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部

这段代码的那个rand出自c99的一个样例程序,用途是在不同系统之间生成一个伪随机数,参照网页链接

这种随机数生成方法叫LCG,线性同余,参照网页链接

网页链接

追问
这些值是怎么得来的?程序是怎样运行的?能详细讲解一下吗?
追答
没怎么来的,具体为啥要回到20年前问开发者了,可能研究数学的才知道。程序运行就是表面的意思,其它没什么特别的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式