一、C++中不能使用random()函数
random函数不是ANSI C标准,不能在gcc,vc等编译器下编译通过。但在C语言中int random(num)可以这样使用,它返回的是0至num-1的一个随机数。 可改用C++下的rand函数来实现。
、C++标准函数库提供一随机数生成器rand,返回0-RAND_MAX之间均匀分布的伪随机整数。 RAND_MAX必须至少为32767。rand()函数不接受参数,默认以1为种子(即起始值)。 随机数生成器总是以相同的种子开始,所以形成的伪随机数列也相同,失去了随机意义。(但这样便于程序调试)
、C++中另一函数srand(),可以指定不同的数(无符号整数变元)为种子。但是如果种子相同,伪随机数列也相同。一个办法是让用户输入种子,但是仍然不理想。
、 比较理想的是用变化的数,比如时间来作为随机数生成器的种子。 time的值每时每刻都不同。所以种子不同,所以,产生的随机数也不同。
// 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=;i<;i++)
cout<<rand()%MAX<<endl;//MAX为最大值,其随机域为0~MAX-1
   return ;
}
二、rand()的用法
rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。
/* maximum value returned by "rand" function
*/
#define RAND_MAX 0x7fffu 这个是bcc55中的定义,说明这个整数的最大数是0x7fffu,u代表unicode编码。 这样,如果你要产生0~10的10个整数,可以表达为:
int N = rand() % ;
这样,N的值就是一个0~10的随机数,如果要产生1~,则是这样:
int N = + rand() % ;
总结来说,可以表示为:
a + rand() % n
其中的a是起始值,n是整数的范围。
  a + rand() % (b-a+) 就表示 a~b之间的一个随机数
若要0~1的小数,则可以先取得0~10的整数,然后均除以10即可得到随机到十分位的10个随机小数,若要得到随机到百分位的随机小数,则需要先得到0~100的10个整数,然后均除以100,其它情况依
此类推。
通常rand()产生的随机数在每次运行的时候都是与上一次相同的,这是有意这样设计的,是为了便于程序的调试。若要产生每次不同的随机数,可以使用srand( seed )函数进行随机化,随着seed的不同,就能够产生不同的随机数。
如大家所说,还可以包含time.h头文件,然后使用srand(time())来使用当前时间使随机数发生器随机化,这样就可以保证每两次运行时可以得到不同的随机数序列(只要两次运行的间隔超过1秒)。

c++ rand()的更多相关文章

  1. SQL Server 随机数,随机区间,随机抽取数据rand(),floor(),ceiling(),round(),newid()函数等

    在查询分析器中执行:select rand(),可以看到结果会是类似于这样的随机小数:0.36361513486289558,像这样的小数在实际应用中用得不多,一般要取随机数都会取随机整数.那就看下面 ...

  2. 学习笔记 MYSQL报错注入(count()、rand()、group by)

    首先看下常见的攻击载荷,如下: select count(*),(floor(rand(0)*2))x from table group by x; 然后对于攻击载荷进行解释, floor(rand( ...

  3. iOS之关于 srand() 和rand()

    srand(seed)用来将随机序列的起始点设为seed srand((int)time(0))表示以当前时间对应的int值为随机序列起点,这样每次运行程序,由于起点不同才可以得到不同的随机数 tim ...

  4. 报错注入分析之(count()、rand()、group by)分析,被大佬称为floor报错注入

    PS:在这几天的学习当中很多的文章都将此注入方式称之为“floor报错分析”但经过我这几天的学习.个人觉得不该如此称呼!若君有意请详细阅读此篇文章.特别感谢米怀特的开导,说句实在的研究这个注入有四天了 ...

  5. 解决rand()伪随机数

    利用time改变种子 例: #include <stdlib.h> #include <stdio.h> #include <time.h>//使用当前时钟做种子 ...

  6. srand()以及rand()函数用法

    srand()就是给rand()提供种子seed 如果srand每次输入的数值是一样的,那么每次运行产生的随机数也是一样的, srand(n) for(10) rand()也就是说,以一个固定的数值作 ...

  7. SQL中随机数函数rand()简介

    转自:http://database.51cto.com/art/201009/224397.htm 下文将为您介绍SQL中的随机函数rand(),供您参考,如果您是才接触SQL Server的新手, ...

  8. rand & random & arc4random

    rand(3) / random(3) / arc4random(3) / et al. Written by Mattt Thompson on August 12th, 2013 What pas ...

  9. WEKA运行LIBSVM出现problem evaluating classifier:rand

    原来这个实验已经做了的.也出现了些问题,但是上网找到了解决方法,那个时候是完成数据挖掘的课程论文,用WEKA运行LIBSVM,也没有很深入,简单跑出结果就算了. 这次想着研讨会就讲这个,想着深入进去, ...

  10. 随机函数的代码(srand、rand)

    #include<stdio.h> int main() int counter; for(counter=0;counter<10;counter++) { srand(count ...

随机推荐

  1. tsung的配置使用

    1.在root下新建.tsung文件,在.tsung文件新建log文件夹..tsung文件用于存放log和xml文件 2.复制/usr/local/tsung/share/doc/tsung/exam ...

  2. Python的ipython的安装

    IPython是Python 的原生交互式 shell 的增强版,可以完成许多不同寻常的任务,比如帮助实现并行化计算:主要使用它提供的交互性帮助,比如代码着色.改进了的命令行回调.制表符完成.宏功能以 ...

  3. 输出流格式化(以操纵子方式格式化,以ios类成员函数方式格式化)

    一.以操纵子方式格式化 数据输入输出的格式控制使用系统头文件<iomanip>中提供的操纵符.把它们作为插入操作符<<的输出对象即可.如setiosflags.setw.set ...

  4. linux学习知识

    一.用户,用户组 http://os.51cto.com/art/201003/187533.htm http://www.cnblogs.com/zhoug2020/archive/2012/02/ ...

  5. https://download.csdn.net/download/qq_33200967/10679367

    convert_variables_to_constants 模型 https://download.csdn.net/download/qq_33200967/10679367

  6. Linux服务器丢包故障的解决思路及引申的TCP/IP协议栈理论

    我们使用Linux作为服务器操作系统时,为了达到高并发处理能力,充分利用机器性能,经常会进行一些内核参数的调整优化,但不合理的调整常常也会引起意想不到的其他问题,本文就一次Linux服务器丢包故障的处 ...

  7. linux 下面压缩,解压.rar文件以及rar,unrar实例

    http://www.rarlab.com/download.htm [root@bass src]# wget http://www.rarlab.com/rar/rarlinux-x64-5.4. ...

  8. Spring学习9-MyEclipse中Spring工程使用@Resource注释的问题

    在MyEclipse 的Spring工程中,有时候要使用@Resource注释来驱动Spring配置.但是在MyEclipse添加Spring开发能力的操作中,并没有 把相关的库添加到工程的class ...

  9. C语言 · 大数加法

    算法提高 大数加法   时间限制:1.0s   内存限制:256.0MB      问题描述 输入两个正整数a,b,输出a+b的值. 输入格式 两行,第一行a,第二行b.a和b的长度均小于1000位. ...

  10. Spider Studio 新版本 (20140109) - 修复浏览器对部分网页不支持的BUG

    SS对部分网页中引用的jquery.js有冲突, 会造成网页部分JS效果无法正常执行. 本次版本对其进行了修正, 优化了浏览器的脚本引用机制, 修正了这个BUG.