每次rand出来都是41?说好的随机数呢?!
rand()函数是C++标准函数库提供的随机数生成器,生成0-RAND_MAX之间的一个“伪随机”整数,理论上可以产生的最大数值为2^16-1,即32767。
rand()函数不接受参数,默认以1为种子(seed,即起始值),这里的种子在随机数产生的过程中起了很大的作用,甚至可以说是起了决定性的作用。
rand()=41?
#include<iostream>
using namespace std;
int main(int argc,char*argv[])
{
int randValue=rand();
cout<<randValue<<endl;
system("pause");
}
int rand()
{
static int seed=XX;
return seed=A*seed+B*n;
}
这里的A、B、n都是常量值,所以这就意味着rand()产生的随机数就唯一取决于种子seed的值,在我们没有定义初始值的情况下,系统默认给出seed值为1,这就是为什么每次rand出来的值固定都是41的原因。
#include<iostream>
using namespace std;
int main(int argc,char*argv[])
{
int randValue[10];
for(int i=0;i<10;i++)
{
randValue[i]=rand();
cout<<randValue[i]<<endl;
}
system("pause");
}
生成10个随机数:
srand()种子生成器
srand()可以指定不同的数(无符号整数变元)为种子。但是如果种子相同,伪随机数序列也会相同,比较理想的是使用随时会变化的数,常用时间作为随机数生成器的种子。
#include<iostream>
#include <time.h>
using namespace std;
int main(int argc,char*argv[])
{
int randValue[10];
srand(time(0));
cout<<"本次所用种子为: "<<time(0)<<endl;
for(int i=0;i<10;i++)
{
randValue[i]=rand();
cout<<randValue[i]<<endl;
}
system("pause");
}
如何生成0~N间(N-1)个互不重复的随机数?
#include<iostream>
#include <time.h>
#include<vector>
using namespace std;
//定义需要生成的随机数数量
#define Number 15
void Randarrary( vector<int>& arrarInt) ;
int main(int argc,char*argv[])
{
vector<int> arrarInt;
for(int i=0;i<Number;i++)
{
arrarInt.push_back(i);
}
Randarrary(arrarInt);
for(int i=0;i<Number;i++)
{
cout<<"第 "<<i<<" 个不重复的随机数是"<<arrarInt[i]<<endl;
}
system("pause");
}
//*******************************************************************//
//生成N个互不重复的随机数函数
//*******************************************************************//
void Randarrary( vector<int>& arrarInt)
{
for(int i=0;i<arrarInt.size();i++)
{
srand(int(time(0)));
int a=rand()%(arrarInt.size()-i)+i;
swap(arrarInt[i],arrarInt[a]);
}
}
每次rand出来都是41?说好的随机数呢?!的更多相关文章
- github每次推送都要输入用户名和密码
/***************************************************************************** * github每次推送都要输入用户名和密 ...
- 【排障】每次打开word都提示要安装配置
为什么每次打开word都提示要安装配置?很多人在打开word时,总是提示要安装配置一遍,花去不少时间,这是由于电脑里有两个不同版本的office软件,产生的原因可能是原来的卸载了没卸载干净,或是安装了 ...
- 每次打开VS都报错:我们无法自动填充你的 Visual Studio Team Services 帐户
我们无法自动填充你的 Visual Studio Team Services 帐户.遇到下面的错误: TF400813: Resource not available for anonymous ac ...
- javashop每次重新部署都要从新安装的问题
javashop每次重新部署都要从新安装的问题 发现一个问题就是用MyEclipse是部署不上的,用eclipse才行. 这个问题的关键在于javashop有好多文件都是动态生成的,好多配置文件也是在 ...
- appium+python解决每次运行代码都提示安装Unlock以及AppiumSetting的问题
appium+python解决每次运行代码都提示安装Unlock以及AppiumSetting的问题(部分安卓机型) 1.修改appium-android-driver\lib下的android-he ...
- 解决Deepin每次打开Chome都提示解锁登录密钥环的麻烦
密钥环是linux系统用于安全保存程序私密数据的模块,可以用于加密保存密码.证书.密钥等安全数据.chrome的密钥环用于保存本地访问站点密码或缓存从google服务器同步下来的访问站点的密码. De ...
- 安装mysql5.7后无法启动,/var/run/mysqld 目录每次重启后都需要手动去创建--终极解决方案
鉴于很多童鞋反应,mysql5.7安装后出现无法启动,建立/var/run/mysqld 并赋权mysql用户解决了启动的问题,但是重启系统后又出现无法启动的问题,导致/var/run/mysqld ...
- Deepin系统关于每次启动终端都要输入source /etc/profile的问题
关于每次启动终端都要输入source /etc/profile的问题 当我在Deepin系统中下载了node以及npm之后,我为了将node导入到系统文件,使用了以下命令sudo gedit ``/e ...
- win7下每次打开Excel2007都提示向程序发送命令时出现问题的解决方案
每次打开Excel2007都提示向程序发送命令时出现问题,要打开两次才可以打开,下面介绍该问题的解决办法. 第一种情况:也就是屏蔽DDE的解决方案,这是大多数人都是这种情况,该情况的解决办法: exc ...
随机推荐
- hdu1251 字典树trie 模板题
//字典树模板题.题意:给一个库,每次查询,求以之为前缀的单词数量. #include<iostream> #include<string> #include<vecto ...
- LeetCode OJ--Remove Duplicates from Sorted List II *
http://oj.leetcode.com/problems/remove-duplicates-from-sorted-list-ii/ 处理链表的范例 #include <iostream ...
- DispatcherServlet url-pattern中 /、/*、*.do中的区别与作用
DispatcherServlet url-pattern中 /./*.*.do中的区别与作用 "/'表示匹配所有请求(其中包含除.jsp和.jspx外的所有后缀). 如果不配置静态资源,它 ...
- Java集合——遍历集合元素并修改
Java集合——遍历集合元素并修改 摘要:本文主要总结了遍历集合的方式,以及在遍历时修改集合要注意的问题. 遍历Collection 对List和Set的遍历,有四种方式,下面以ArrayList为例 ...
- Ubuntu 16.04下快速在当前目录打开终端的快捷键设置
说明:不一定每次都准确打开,80%的机会是行的. 原理:使用xdotool模拟键盘按键,打开的文件夹管理界面,然后通过Ctrl+L获取地址栏地址,然后传递到终端上. 安装: 1.安装xdotool s ...
- Java抓屏程序代码
原文:http://www.open-open.com/code/view/1422262655200 import java.awt.Dimension; import java.awt.Recta ...
- Python机器学习--回归
线性回归 # -*- coding: utf-8 -*- """ Created on Wed Aug 30 19:55:37 2017 @author: Adminis ...
- Version和Build的差别
[1]概念 iOS的版本号号.一个叫做Version,一个叫做Build,这两个值都能够在Xcode 中选中target,点击"Summary"后看到. Version在plist ...
- booth乘法器原理
在微处理器芯片中,乘法器是进行数字信号处理的核心,同一时候也是微处理器中进行数据处理的wd=%E5%85%B3%E9%94%AE%E9%83%A8%E4%BB%B6&hl_tag=textli ...
- 紫书p199 八数码(BFS,hash)
八数码问题 紫书上的简单搜索 渣渣好久才弄懂 #include<cstdio> #include<cstring> using namespace std; const i ...