C++中的随机函数有哪些

一、random函数不是ANSI
C标准,不能在gcc,vc等编译器下编译通过。 可改用C++下的rand函数来实现。

1、C++标准函数库提供一随机数生成器rand,返回0-RAND_MAX之间均匀分布的伪随机整数。
RAND_MAX必须至少为32767。rand()函数不接受参数,默认以1为种子(即起始值)。
随机数生成器总是以相同的种子开始,所以形成的伪随机数列也相同,失去了随机意义。(但这样便于程序调试) 
     2、C++中另一函数srand(),可以指定不同的数(无符号整数变元)为种子。但是如果种子相同,伪随机数列也相同。一个办法是让用户输入种子,但是仍然不理想。 
     3、
比较理想的是用变化的数,比如时间来作为随机数生成器的种子。 time的值每时每刻都不同。所以种子不同,所以,产生的随机数也不同。 
//
C++随机函数(VC program) 
#include
<stdlib.h> 
#include
<iostream.h> 
#include
<time.h> 
#define MAX
100 
void main()

      
srand( (unsigned)time( NULL ) );//srand()函数产生一个以当前时间开始的随机种子 
  
for (int i=0;i<10;i++) 
  
cout<<rand()%MAX<<endl;//MAX为最大值,其随机域为0~MAX-1

二、rand()的用法   
    
rand()不需要参数,它会返回一个从0到最大随机数的任意整数,最大随机数的大小通常是固定的一个大整数。
这样,如果你要产生0~10的10个整数,可以表达为: 
  int N = rand() % 11; 
    
这样,N的值就是一个0~10的随机数,如果要产生1~10,则是这样: 
  int N = 1 + rand() % 10; 
  总结来说,可以表示为: 
  a
+ rand() % n 
    
其中的a是起始值,n是整数的范围。
若要0~1的小数,则可以先取得0~10的整数,然后均除以10即可得到随机到十分位的10个随机小数,若要得到随机到百分位的随机小数,则需要先得到0~100的10个整数,然后均除以100,其它情况依
此类推。 
    
通常rand()产生的随机数在每次运行的时候都是与上一次相同的,这是有意这样设计的,是为了便于程序的调试。若要产生每次不同的随机数,可以使用srand(
seed )函数进行随机化,随着seed的不同,就能够产生不同的随机数。 
    
如大家所说,还可以包含time.h头文件,然后使用srand(time(0))来使用当前时间使随机数发生器随机化,这样就可以保证每两次运行时可以得到不同的随机数序列(只要两次运行的间隔超过1秒)。

注:rand()产生的是0 to
RAND_MAX (32767)上的随机数,而32767不能被11整除。

因此 int N = rand()
% 11;
得到的随机数,并不是从0-10一致分布的取9,10的概率取0-8几个数字的概率少了11/32767约为1/2978;

所以要取0~M的随机数,若M较小时这样作问题不大,但M较大时,例如M=30000,则取到0-2767的概率是取后面几个数字的两倍,严重不符合随机分布!

C++中的随机函数有哪些,布布扣,bubuko.com

时间: 2024-10-13 03:04:10

C++中的随机函数有哪些的相关文章

1. python中的随机函数

本系列不会对python语法,理论作详细说明:所以不是一个学习教材:详细查考Vamei 大神:通俗易懂:是一个很好(基础-中级-高级)的学习教程.而这里只是我一个学习python的某些专题的总结. 1. random()函数 描述:random() 方法返回随机生成的一个实数,它在[0,1)范围内. 语法: import random random.random(); 注意:random()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法. 实例演示:

np中的随机函数

numpy.random.uniform介绍: 1. 函数原型:  numpy.random.uniform(low,high,size)  ==>也即其他函数是对该函数的进一步封装 功能:从一个均匀分布[low,high)中随机采样,注意定义域是左闭右开,即包含low,不包含high. 参数介绍:         low: 采样下界,float类型,默认值为0:    high: 采样上界,float类型,默认值为1:    size: 输出样本数目,为int或元组(tuple)类型,例如,s

在LoadRunner脚本中实现随机ThinkTime

一般情况下,我们都是通过Run-Time Settings来设置Think Time(思考时间),可以设置回放脚本时忽略思考时间,或者是设置回放随机的一段思考时间. By default, when you run a Vuser script, the Vuser uses the think time values that were recorded into the script during the recording session. VuGen allows you to use

Java中hashcode,equals和==

hashcode方法返回该对象的哈希码值. hashCode()方法可以用来来提高Map里面的搜索效率的,Map会根据不同的hashCode()来放在不同的位置,Map在搜索一个对象的时候先通过hashCode()找到相应的位置,然后再根据equals()方法判断这个位置上的对象与当前要插入的对象是不是同一个.若两个对象equals相等,但不在一个区间,根本没有机会进行比较,会被认为是不同的对象. 所以,Java对于eqauls方法和hashCode方法是这样规定的: 1.如果两个对象相同,那么

C语言随机函数

在C语言中,rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,就符合正态公布,从而相当于产生了随机数,但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int a). 可能大家都知道C语言中的随机函数random,可是random函数并不是ANSI C标准,

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

转自:http://database.51cto.com/art/201009/224397.htm 下文将为您介绍SQL中的随机函数rand(),供您参考,如果您是才接触SQL Server的新手,不妨一看,相信对您学习SQL中的函数会大有帮助. 在SQL Server中,有个随机函数rand(),有不少新手可能不知道存在这个函数,现在我就把这个函数的一些随机数生成技巧写出来,这是面向菜鸟的,老鸟请不要拍砖呀,我的头还不够硬 不过还是希望老鸟们多多指教了,现在切入正题:  随机函数:rand(

基于Java+HttpClient+TestNG的接口自动化测试框架(六)-------随机函数的处理

我们之前使用接口类及接口实现类的方式,来定义了我们使用的工具类. 而所有的工具类中,随机函数是比较难于处理的.因为随机的对象不明确,随机的个数不明确.我们可以使用定义随机类的方式,来简单而快速的处理我们的随机对象生成的需要. 首先,我们先定义一个randomUtil的类,在这个类中,我们可以将想生成的随机函数进行具体的定义.在此,我们举几个例子.比如,随机生成一个整数,随机生成一个定长(或不定长)的,带汉字(或不带汉字)的字符串,随机生成一个数组等等. 来看一下具体的RandomUtil类的代码

thinkphp 模板调用数据

我自己写了个简单的模板是这样的 <!DOCTYPE html> <html> <head> <style> div { width:230px; height:230px; margin:10px; /* div间距 */ text-align:center; /*文字水平居中*/ vertical-align: middle; line-height:230px; /*line-height must be equal to height 文字垂直居中,与

Atitit.手机验证码的破解---伪随机数

1. 手机验证码几乎都是伪随机数1 2. 伪随机数1 2.1. 生成方法编辑1 2.2. 随机数的计算方法在不同的计算机中是不同的,即使在相同的计算机中安装的不同的操作系统中也是不同的.2 2.3. 现在,我们明白随机种子是从哪儿获得的 随机种子来自系统时钟,2 2.4. .计算机的伪随机数是由随机种子根据一定的计算方法计算出来的数值.所以,只要计算方法一定,随机种子一定,那么产生的随机数就是固定的.3 2.5. 只要用户或第三方不设置随机种子,那么在默认情况下随机种子来自系统时钟.3 3. 伪