一、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++中的随机函数的更多相关文章

  1. python中的随机函数random的用法示例

    python中的随机函数random的用法示例 一.random模块简介 Python标准库中的random函数,可以生成随机浮点数.整数.字符串,甚至帮助你随机选择列表序列中的一个元素,打乱一组数据 ...

  2. MSSQL中的随机函数

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

  3. jmeter===JMeter 中Random 随机函数的使用(转)

    原文:http://blog.csdn.net/dreamtl/article/details/68952272 场景:在做接口测试时,比如说要求用户的手机号码不允许重复,那此时可以通过Random ...

  4. JMeter 中Random 随机函数的使用

    场景:在做接口测试时,比如说要求用户的手机号码不允许重复,那此时可以通过Random 随机函数来解决此问题: 1.在JMeter 工具中,选择{选项-函数助手对话框-} 函数助手中选择 Random ...

  5. 1. python中的随机函数

         本系列不会对python语法,理论作详细说明:所以不是一个学习教材:详细查考Vamei 大神:通俗易懂:是一个很好(基础-中级-高级)的学习教程.而这里只是我一个学习python的某些专题的 ...

  6. 深入理解Oracle中的随机函数

    --Oracle中取随机值的函数 .dbms_random包 dbms_random包提供了一系列的随机值获取函数以及相关存储过程.下面详细讲解常用的函数和过程. ()dbms_random.rand ...

  7. python中的随机函数

    python--随机函数(random,uniform,randint,randrange,shuffle,sample) 本文转载自:[chamie] random() random()方法:返回随 ...

  8. np中的随机函数

      numpy.random.uniform介绍: 1. 函数原型:  numpy.random.uniform(low,high,size)  ==>也即其他函数是对该函数的进一步封装 功能: ...

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

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

随机推荐

  1. [转]c# winform tcp connect timeout 连接超时设置

    转自:https://www.cnblogs.com/jhlong/p/5622336.html 简单的c# TCP通讯(TcpListener) C# 的TCP Socket (同步方式) C# 的 ...

  2. Android 开发中三种多线程

    在开发工程中线程可以帮助我们提高运行速度,Android开发中我知道的线程有四个一个是老生长谈的Thread,第二个是asyncTask,第三个:TimetTask,第四个是Looper,四个多线程各 ...

  3. 如何使用Nginx和uWSGI或Gunicorn在Ubuntu上部署Flask Web应用

    你好!欢迎阅读我的博文,你可以跳转到我的个人博客网站,会有更好的排版效果和功能. 此外,本篇博文为本人Pushy原创,如需转载请注明出处:https://pushy.site/posts/151981 ...

  4. redis HyperLogLog 基数估算

    HyperLogLog 可以接受多个元素的输入,返回输入元素的基数估算值基数,集合中不同元素的数量.如集合{1,2,3,1,2,3,4}的基数是4.估算,HyperLogLog算法返回的基数不是完全精 ...

  5. scp远程传输文件和ssh远程连接

    ssh使用方法 如果从一台linux服务器通过ssh远程登录到另一台Linux机器, 这种情况通常会在多台服务器的时候用到. 如用root帐号连接一个IP为192.168.1.102的机器,输入:“  ...

  6. 软工读书笔记 week 9 ——《构建之法》

    软工读书笔记  week 9                 ——<构建之法> 最近的三周我们正式开始我们的项目.然后我也把<构建之法>中的相关章节再拿出来读了一番.以下是一些 ...

  7. 回归JavaScript基础(一)

    主题:JavaScript简介. 一.JavaScript的起源 JavaScript诞生于1995年.当时,它的主要作用是处理一些输入验证操作.之前的话,都是把表单数据发送到服务器端,然后再去判断有 ...

  8. 在 Azure VM 上安装 LAMP Web 服务器

    本文逐步讲解如何在 Azure 中的 Ubuntu VM 上部署 Apache Web 服务器.MySQL 和 PHP(LAMP 堆栈). 如果想要部署 NGINX Web 服务器,请参阅 LEMP ...

  9. Oracle EBS 更新客户地点

    --更新客户地点 declare x_return_status ); x_msg_count NUMBER; x_msg_data ); x_profile_id NUMBER; l_locatio ...

  10. 将mongodb设置为windows服务

    [转载] [转载]安装mongodb以及设置为windows服务 详细步骤 将mongodb设置成windows服务,这样就不用使用命令启动了,设置方法如下: 1.在data文件夹下新建一个log文件 ...