c语言-[请教] 关于ANSIC [可移植]伪随机函数rand() 的问题。。。

问题描述

[请教] 关于ANSIC [可移植]伪随机函数rand() 的问题。。。

/* rand0.c ---产生随机数*/
/*使用ANSI C 可移植算法*/
static unsigned long int next=1; //种子
int rand0(void)
{
next=next*1103515245+123456;
return (unsigned int)(next/65536)%32768;
}
void srand0(unsigned int seed)
{
next=seed;
}
/*r_drive0.c 测试rand0() srand0()函数*/
#include
#include

extern void srand0(unsigned int);
extern int rand0(void);
int main(void)
{
int count;
srand0((unsigned int)time(0));
for(count=0;count printf("%dn",rand0());
return 0;
}
/////////////////////////////////////////////////////////////////////////////////
为什么rand0() 函数里面的那2个公式是可移植算法?

解决方案

可移植的含义就是完全依靠数学公式,而不依靠特定的计算机和系统,比如线性同余,它产生的伪随机数序列是确定的

http://www.cnblogs.com/xkfz007/archive/2012/03/27/2420154.html

什么叫做不可移植?比如说cpu有个硬件指令产生随机数,并且没有软件可以模拟。或者从温度传感器获得当前气温和湿度作为随机数,这些就不能移植。

时间: 2024-09-30 00:14:21

c语言-[请教] 关于ANSIC [可移植]伪随机函数rand() 的问题。。。的相关文章

c rand srand-[请教]C伪随机函数rand() 的相关问题

问题描述 [请教]C伪随机函数rand() 的相关问题 /* rand0.c ---产生随机数*/ /*使用ANSI C 可移植算法*/ static unsigned long int next=1; //种子 int rand0(void) { next=next*1103515245+123456; return (unsigned int)(next/65536)%32768; } void srand0(unsigned int seed) { next=seed; } /*r_dri

r语言-TEST2:R语言算法请教,还请高手回复

问题描述 TEST2:R语言算法请教,还请高手回复 TEST2:R语言算法请教,还请高手回复,凑字数为凑字数到30个字 有点难度呀 解决方案 TEST 回答问题,自己可以回答自己的问题吗? 解决方案二: TEST 测试顶踩 发送不了了

图片-C语言,请教关于结构体数组的问题

问题描述 C语言,请教关于结构体数组的问题 图中倒数第二行 scanf("%d",&G[i]); 结构体VNode中有两类元素int data 和ArcNode *firstarc 为什么"&G[i]"就是给结构体VNode中的data赋值? 解决方案 &G[i]和&G[i].data的地址相同,有的编译器允许这样使用. 解决方案二: C语言结构体数组赋值问题IOS开发---C语言-?结构体数组C语言中的结构体数组 解决方案三: 我想

c++-C语言,请教关于创建二叉树的问题

问题描述 C语言,请教关于创建二叉树的问题 void CreatBiTree(BiTree *T) 为什么是BiTree *T,而不是 BiTree T? #include typedef struct BiTNode { char data; struct BiTNode *lchild, *rchild; }BiTNode, *BiTree; void CreatBiTree(BiTree *T) { char c; scanf("%c", &c); if (c == '

[CRP 3月产品更新日志]多语言持续交付的支持

前情概要: 过去的几个月里,我们对Java和Node语言的持续交付做了以下一些事: 支持使用aliyun的maven仓库,也支持使用用户自有的maven仓库: 支持配置项文件和代码库的物理隔离存储,保证重要信息的私密性.同时又支持工作流编译时上传配置项文件,从而使得代码工程在编译时可以动态替换配置项. 支持Node语言编译时快速安装C语言的扩展依赖,从而提高Node语言的编译测试效率. 3月重点更新内容: 在阿里云上,越来越多的用户选择了CRP作为团队的持续集成和部署的平台.很多用户对我们提出多

c语言编程-请教c语言指针字符串问题

问题描述 请教c语言指针字符串问题 #include"stdio.h" #include"string.h" int main(void) { char*str[10]; int i; for(i=0;i<10;i++) gets(str[i]); return 0; } 解决方案 C语言字符串的指针C语言中的指针与字符串C语言字符串.指针和内存问题总结 解决方案二: 字符串指针变量(字符串的首地址) 以字符串形式输出以后为什么会和 字符串指针变量的内容是一样

c语言 数组-请教如何用c语言去除一个数组中所有值为零的元素,而且这些零元素中有连续排列的?

问题描述 请教如何用c语言去除一个数组中所有值为零的元素,而且这些零元素中有连续排列的? 能否给一个示例程序?感激不尽! 比如以下这个数组中有连续的0元素,如何去除所有的零元素? double a[64]={4.63866e+020,1.456e+027,-7.67487e+017,9.86481e+016,0,0,-3.1101e+014,-9.38282e+010, 1.456e+027,4.60249e+033,-2.3969e+024,3.36857e+023,0,0,-9.64264e

C语言菜鸟请教

问题描述 我电脑室神舟,系统WIN7,用的C语言编译器是VC6.0,刚开始能顺利运行vc,过了几天后编译的时候就会显示Errorspawning,用百度上的办法也不会怎么弄,请教大神,最好详细点.有图最好 解决方案 解决方案二:装个vs2013解决方案三:安装个虚拟机.我就这样.虚拟2003server解决方案四:vc6在win7下面也能用.重新安装.安装的时候好几个地方不能勾选.网上有啊

c语言-想请教下C语言中a&amp;amp;lt;&amp;amp;lt;2为什么不起作用?

问题描述 想请教下C语言中a<<2为什么不起作用? 如下代码: #include <stdio.h> int main() { int a =8; a<<2; printf("%dn",a); } 为什么打印出来还是8呢? 解决方案 要对a进行赋值a= a<<2; 解决方案二: 因为a<<2只是一个表达式,没有对a进行赋值,如果a=a<<2;那么打印出来的结果就会变了 解决方案三: a< -> a<