C/C++ 标准函数应用小结 之 随机函数
自从接触这门语言到现在有一个多星期的时间了,虽然以后的路还很长,会遇到各种困难,但只要有耐心和毅力,还要脚踏实地的打好基础,就一定能有长途的进步,呵呵,希望在这里的每一个人都和我一起加油,不断进步。
随机函数对每种编程语言来说都是一个不可缺少的环节,那么在C++中它是如何应用的,这里为了方便理解,对以前看过的几篇文章做以下总结:
I ) 本地C++控制台应用程序
C++标准函数库提供一随机数生成器rand,rand()函数不接受参数,默认以1为种子(即起始值)。 随机数生成器总是以相同的种子开始,所以形成的伪随机数列也相同。如果需要产生的随机数不需要设定范围的话,用rand()就行。
不要忘记事先定义包含rand()的头文件 #include<stdio.h>和#include<stdlib.h>。如例1 #include<stdio.h>
#include<stdlib.h>
void main()
{
for(int i=0;i<10;i+)
printf("%d\n",rand());
}
具体应用如,要产生0到10的随机数 rand()%(10 + 1); 即 rand()%11; 若1到10 : 1 + rand()%11;以此类推 a到b : a + rand()%(b - a + 1);
运行后会发现,每次运行程序产生的随机数都是一样的,因为如果种子相同的话,产生的伪随机数列也相同。若要产生每次不同的随机数,可以使用C++中另一函数srand(),可以指定不同的数(无符号整数变元)为种子。
用时间来作为随机数生成器的种子比较理想,time的值每时每刻都不同。所以种子不同,所以,产生的随机数也不同。
如例2 // C++随机函数(VC program)
#include <stdio.h>
#include <iostream>
#include <time.h>
using namespace std;
#define MAX 100
int main(int argc, char* argv[])
{
srand( (unsigned)time( NULL ) );//srand()函数产生一个以当前时间开始的随机种子.应该放在for等循环语句前面 不然要很长时间等待
for (int i=0;i<10;i++)
cout<<rand()%MAX<<endl;//MAX为最大值,其随机域为0~MAX-1
return 0;
}
这样就可以每次得到0到某个范围不同随机数,例题中同样需要先定义包含时间函数time()的头文件。
相关文档:
在C语言里,全局变量如果不初始化的话,默认为0,也就是说在全局空间里:
int x =0; 跟 int x; 的效果看起来是一样的。但其实这里面的差别很大,强烈建议大家所有的全局变量都要初始化,他们的主要差别如下:
编译器在编译的时候针对这两种情况会产生两种符号放在目标文件的符号表中,对于初始化的,叫强符号,未初始化的 ......
c文件操作就这么简单
文件操作,稍微一总结.。
FILE是一个结构体类型,在TC和VS中定义不相同,他的作用就是在fopen()之后保存了打开文件的信息。也就是说操作系统帮我们完成了,我们不用管,大大降低了难度吧。
首先我们考虑下对文件的操作,文件类型分为文本和二进制。读写文件的函数一般前面有个f,也就表示file,open ......
static char *file2memory(FILE *file, long *size)
{
char buffer[1024];
char *string=NULL;
char *newstring=NULL;
long len=0;
long stringlen=0;
if(file) {
while((len = fread(buffer, 1, sizeof(buffer), f ......
楔子
去年,周星星大哥曾经在VCKBASE/C++论坛发表过一篇文章“数组引用"以避免"数组降阶”,当时我不能深入理解这种用法的含义;时隔一年,我的知识有几经锤炼,终于对此文章渐有所悟,所以把吾所知作想具体道来,竟也成了一篇文章。希望本文能对新手有所启迪,同时也希望大家发现本文中的疏漏之处后不吝留 ......
用C语言写的一个简单的字节型查询器,主要功能是实现对 signed int float unsigned int double s ......