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; 的效果看起来是一样的。但其实这里面的差别很大,强烈建议大家所有的全局变量都要初始化,他们的主要差别如下:
编译器在编译的时候针对这两种情况会产生两种符号放在目标文件的符号表中,对于初始化的,叫强符号,未初始化的 ......
1、C和C++够笨,逼的程序员自己做很多事。
C其实大家都知道,是一门中低级语言,保留了指针等汇编特征,与系统底层结合密切。C++呢,更多的向个Object C,即面向对象的C。但这些,其实并不能够让程序员显得很牛。
我个人的理解,之所以C和C++程序员显得很牛,其实原因和大家想像的正好相反,不是因为C和C++太强大,而是这 ......
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 ......
突然发现自己连一元二次方程怎么算的都不知道了。想了半天,拿起笔来才顺手些了给x2+2x+1=0.悔恨啊。
#include "iostream"
#include "cmath"
using namespace std;
int main(){
double a,b,c;
double delta,x1,x2;
int sign,stop;
cout<<"输入3个系数a(a!=0),b,c"<<endl;
cin>>a>>b& ......