易截截图软件、单文件、免安装、纯绿色、仅160KB

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程序大赛的获奖程序

int main()
{
printf(&unix["\021%six\012\0"], (unix)["have"] + "fun" - 0x60);
}
gcc -S编译成汇编代码如下:
        .file   "test.c"
        .section        .rodata
.LC0:
&nbs ......

编程求一元二次方程ax2+bx+c=0的根

突然发现自己连一元二次方程怎么算的都不知道了。想了半天,拿起笔来才顺手些了给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& ......

C/C++中数组形参(转帖)

楔子
   去年,周星星大哥曾经在VCKBASE/C++论坛发表过一篇文章“数组引用"以避免"数组降阶”,当时我不能深入理解这种用法的含义;时隔一年,我的知识有几经锤炼,终于对此文章渐有所悟,所以把吾所知作想具体道来,竟也成了一篇文章。希望本文能对新手有所启迪,同时也希望大家发现本文中的疏漏之处后不吝留 ......

C语言写的字节查询器(初学C练手用)

用C语言写的一个简单的字节型查询器,主要功能是实现对        signed int        float        unsigned int        double        s ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号