c语言random函数在vc,C++ 中随机函数random函数的使用方法
C++ 中随机函数random函数的使用方法
一、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
#include
#include
#define MAX 100
void main()
{
srand( (unsigned)time( NULL ) );//srand()函数产生一个以当前时间开始的随机种子
for (int i=0;i<10;i++)
cout<
}
二、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的概率是取后面几个数字的两倍,严重不符合随机分布!
三、按要求设置概率
比如要设置一个10%的概率问题,我们可以采取rand()函数来实现,在if条件句判断里,用rand()得到的值%一个设定的值,再与另一个值做“==”运算。
例如:
if(1==rand()%10)
{ //10%的概率达成,这里编辑余下代码}
else
{ //90%的概率没达成,这里编辑余下代码}
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
c语言random函数在vc,C++ 中随机函数random函数的使用方法相关推荐
- java中函数的调用,java中如何调用函数
java动态调用函数,Java 中使用动态代码,java函数调用,java中如何调用函数 如何在 Java 中调用 C 函数 宗薇 [期刊名称]<网络新媒体技术> [年(卷),期]2000 ...
- python中lambda函数if用法-Python中关于Lambda函数的使用总结
lambda表达式是一种匿名函数,对应python中的自定义函数def,是定义某个函数时比较高级的一种写法.作为python初学者,本文整理了lambda的一些基本用法和特点. lambda和def的 ...
- python自带的sum()函数和numpy库中的sum()函数的区别
在学习<机器学习实战>一书的第十章时,对 return np.sqrt(sum(np.power(vecA - vecB, 2))) 这样一条语句输出的结果老是不对,明明想要输出的是对两个 ...
- C语言中比较大小的函数模板,关于C++中定义比较函数的三种方法
关于C++中定义比较函数的三种方法 C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之.以下,小编为大家介绍关于C++中定义比较函数的三种方法,供 ...
- JavaScript匿名函数以及在循环中的匿名函数
一 历史 JavaScript其实是一门奇异的语言,TA的一大特性是没有块级作用域 for(var i=0;i<10;i++){} console.log(i) 大家猜测下值是多少? 答案是 1 ...
- matlab 子函数怎么写,matlab中怎么写函数
1.matlab怎么写函数文件~ 1.首先在电脑中打开baimatlab软件. 2.在打开的页面中点击"du主页"栏目下的"新建"按钮.zhi 3.然后在打开的 ...
- html实现log函数,math。h中的log函数的应用
以10为底的log函数: 形式为 double log10(double x) 以e为底的log函数(即 ln)double log (double x) 如何表达log 以a为底b的对数: 用换 ...
- MATLAB解决线性规划问题,学会使用linprog函数,在一个实例中演示linprog函数各参数的用法
最近接触到了一个线性规划的题目,尝试用MATLAB解决,动手前想了很多思路,上网搜索了一下发现MATLAB中有专门的linprog函数专门解决线性规划问题,了解学习后果然十分方便.事实上,绝大部分的线 ...
- oracle迁移mysql视图中函数问题,mysql中to_char自定义函数。
迁移到mysql中会遇到函数迁移问题,我们可以自定义函数 DELIMITER $$ CREATE FUNCTION new_data_report.to_char(Intnumber int) RET ...
最新文章
- linux统计文件的个数
- 第一次 C语言课程设计
- 关于endian的故事,big-endian和little-endian
- 中国联通与阿里宣布相互开放云计算资源
- 《c语言从入门到精通》看书笔记——第5章 常用的数据输入输出函数
- ideadebug热更新_Spring Boot 在IDEA中debug时的hot deployment(热部署)
- 一种基于SE-Inception的茄科疾病识别模型
- jdbc取款怎样限制条件_京东张亮:我们是怎样打造一款分布式数据库的
- c语言统计字符串中每个字符出现的次数
- NLP入门从入门到实战 实体命名识别 +中文预处理之繁简体转换及获取拼音
- 2021年N2观光车和观光列车司机考试内容及N2观光车和观光列车司机模拟考试题库
- (产品贴)手机常用软件之一—微信
- python函数调用关系分析
- pairs和iparis
- [工具]更新音乐下载软件工具音乐下载网站,MP3音乐无损音乐下载器
- 人大金仓 创建表空间_Kingbase金仓更改表空间
- html, css学习笔记,自用(B站黑马程序员pink老师)
- 关于pdf和其zip格式的导出
- PS学习(一)文档的新建,分辨率的设置
- 三相永磁同步电机Foc有感的程序控制(总结:程序2)
热门文章
- 从1亿个数里面找出前100个最大的
- unity android 在后台运行_Unity学习—资源管理概览
- 聊一聊CriteriaQuery
- 总线式-七氟丙烷灭火系统结构图
- 最好的文本框样式 最漂亮的文本框样式 textbox css样式
- PasteMask是助焊层? SolderMask是阻焊层?
- TotalCommander(TotalCMD)的正则表达式
- 分享一个自己写的取中国农历相关数据的类。包含:农历年月日,生肖,星座,年龄,天干,地支等方法...
- python将输出保存为txt_Python3将数据保存为txt文件的方法
- 原来华为手机这么好用,这4大隐藏功能,每个都非常实用有趣