随机数

C++随机数

和自甴很熟 提交于 2020-02-11 17:19:40
C++中的随机数(伪随机)产生不像其他语言直接通过Random函数生成,需要使用 cstdlib库中rand()函数。 产生 [a,n) 的随机数通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。 一般为了产生不重复的随机数,会使用srand()函数设置种子,会以时间为种子。 srand((int)time(0));//产生随机数种子,srand()函数 例1 void Bank::Setaccount() { srand((int)time(0));//产生随机数种子,srand()函数 long tempcard = 0; for(int i = 0; i < 11; i++){ tempcard += tempcard*10 + rand() % 10;//要取得[0,n) 就是rand() %n 表示 从0到n-1的数 /*其他的随机数的范围通式 产生一定范围随机数的通用表示公式是: 要取得[0,n) 就是rand()%n 表示 从0到n-1的数 要取得[a,b)的随机整数,使用(rand() % (b-a))+ a; 要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a; 要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1; 通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。

C# 生成不重复的随机数

痴心易碎 提交于 2020-02-11 03:30:32
我们来看一个实例: 有一个一维数组,一共有10个元素,如何生成非负随机数来填充这个数组。 也就是说,我们如何生成10个不重复的非负数。如果我们直接用随机数的方式来做,肯定不行。 因为,理论上来讲,无论如何,这10个数,始终存在重复数的可能,只是概率的高低而已。 那么,我们如何生成真正不重复随机数了? 我这里的原理是这样: 1.设定一个数组,用来保存原始的非负数,这个数组的大小可以根据需要进行设定。这里设定为100,数组名为intTempArr。再设定一个数组,用来保存生成的无重复随机数,我们设定为:intArr,大小为10。 2.循环填充数组intTempArr,intTempArr中的数字为非负数,且不重复。我们设定intTempArr中的数字为:101-200。 2.随机生成一个在以上数组大小范围内的非负数(我们设定为:temp。也就是说随机生成一个数的范围为:0-99。 3.用以上的随机数temp为索引,得到数组intTempArr[temp]的值,我们设定为:tempValue。 4.将tempValue赋值给intArr,从数组intTempArr中删除值为tempValue的元素,也就是删除索引为temp的值。这样,下次生成随机数时,这个数字就永远也不会出现了。 5.重复以上2,3步,我们就可以实现无重复的随机数了。 下面是代码: 代码 public void

JAVA中获取不重复的随机数

梦想与她 提交于 2020-02-11 03:26:39
我们知道 Random random = new Random() 中可能会获取到重复的随机数 那么假设要获取1到33之间的六个不重复随机数应该怎么做呢? 首先定义一个数字数组存储1到33 int[ ] redBall = new int[33[; for(int i = 0;i<redBall.length;i++){   redBall[i] = i+1; } int[ ] redNumber = new int[6]; //存储六个随机数的实际数组 int index = -1; //通过随机数字数组下标获取随机数 for(int i = 0;i<redNumber.length;i++){   index = random.nextInt(redBall.length-i); //每次获取数字数组长度-i的随机数,比如第一次循环为33第二次为32,   redNumber[i] = redBall[index]; //把数字数组随机下标的值赋给实际数组   int temp = redBall[index]; //定义一个变量暂存下标为index时的值   redBall[index] = redBall[redBall.length-1-i]; //把下标为index的值与数组下标最后的值交换   redBall[redBall.length-1-i] = temp; /

c#生成不重复随机数

放肆的年华 提交于 2020-02-11 03:26:15
//获取count个不大于maxNumber的整数,所有整数不重复。当然,count必须小于等于maxNumber static List< int > GetRandomArray( int maxNumber, int count) { List< int > list = new List< int >(); //保存取出的随机数 int [] array= new int [maxNumber]; //定义初始数组 for ( int i = 0; i < maxNumber; i++) //给数组元素赋值 array[i] = i + 1; Random rnd = new Random(); for ( int j = 0; j < count; j++) { int index = rnd.Next(j,maxNumber); //生成一个随机数,作为数组下标 int temp = array[index]; //从数组中取出index为下标的数 list.Add(temp); //将取出的数添加到list中 array[index] = array[j]; //将下标为j的数交换到index位置 array[j] = temp; //将取出的数交换到j的位置 } return list; } 来源: https://www.cnblogs.com/zzxap

学习matlab(四)——概率与数理统计

风格不统一 提交于 2020-02-10 20:21:36
概率和数理统计是大学数学的重要内容,无论是在科学研究还是在工程实际中都有着非常广泛的应用。在MATLAB中,提供了专门的统计工具箱Staticstics,该工具箱有几百个专用于求解概率和数理统计问题的函数。本章将详细的介绍随机数的产生,随机变量的概率密度函数和数字特征,以及假设检验、方差分析和统计绘图等。 0.随机数 随机数的产生是概率统计的基础,概率论和数理统计就是对各种样本数据进行分析。在MATLAB中,各种样本数据可以用一些经典的随机分布数来表示。下面对常用的二项分布、均匀分布、指数分布、正态分布等随机数据进行详细的介绍。 <1>二项分布随机分布 在MATLAB中,使用函数binornd()产生二项分布的随机数据。该函数的的调用方式如下:R=binornd(N,P):在该函数中N和P为二项分布的两个参数,返回服从参数为N和P的二项分布随机数。R=binornd(N,P,M):在该函数中参数M指定随机数的个数,与返回结果R同维数。 <2>泊松分布 在MATLAB中,使用函数poissrnd()产生泊松分布的随机数据。该函数的调用方式如下:R=poissrnd(LAMBDA):在该函数中LAMBDA为泊松分布的参数,返回服从参数为LAMBDA的泊松分布随机数,其中R与LAMBDA维数相同。R=poissrnd(LAMBDA,M,N):在该函数中LAMBDA为泊松分布的参数

python学习—random生成随机数

让人想犯罪 __ 提交于 2020-02-09 20:07:49
random.random()---随机生成0到1的小数 random.randint(x,y)---随机生成x到y的整数,闭区间,包含两端 random.uniform(a,b)---随机生成a到b的浮点数,闭区间,包含两端 使用随机数模块生成一个5到10之间的浮点数,输出到控制台 import random a1 = random.random() a2 = random.randint(5, 9) number = a2 + a1 print(number) # 扩展:实现方式:random.uniform() print(random.uniform(5, 10)) 来源: https://www.cnblogs.com/erchun/p/12288399.html

C语言寒假大作战03

|▌冷眼眸甩不掉的悲伤 提交于 2020-02-07 22:08:09
这个作业属于哪个课程 C语言程序设计 这个作业要求在哪里 C语言寒假大作战03 这个作业的目标 使用上次作业的菜单框架,并在其基础上增加各年级题目操作函数 参考文献 随机数rand 2.2.2 设计思路和遇到的问题 刚开始时对rand函数比较蒙,但后来查看了关于rand函数的相关概念和使用的方法及例子,才逐渐理解了 调用srand(time(NULL))设置随机数种子。 调用rand函数获取一个或一系列随机数。 2.2.3 程序结果截图 2.2.4 程序代码 2.2.5 Gitee上传截图与链接 Gitte链接 20199476 来源: https://www.cnblogs.com/1bing/p/12273511.html

百度PaddlePaddle入门-5

夙愿已清 提交于 2020-02-06 18:38:11
Numpy是 Numerical Python 的简称,是Python中高性能科学计算和数据分析的基础包。Numpy提供了一个多维数组类型ndarray,它具有矢量算术运算和复杂广播的能力,可以实现快速的计算并且能节省存储空间。在使用Python调用飞桨API完成深度学习任务的过程中, 通常会使用Numpy实现数据预处理和一些模型指标的计算 ,飞桨中的Tensor数据可以很方便的和ndarray数组进行相互转换。 在这一节将介绍以下内容: 基础数据结构ndarray数组 随机数numpy.random 线性代数numpy.linalg Numpy保存和导入文件 应用举例 基础数据结构ndarray数组 ndarray数组是Numpy中的基础数据结构式,这一小节将从以下几个方面展开进行介绍: 为什么引入ndarray数组 如何创建ndarray数组 ndarray数组的基本运算 ndarray数组的切片和索引 ndarray数组的统计运算 为什么引入ndarray数组 在Python中使用list列表可以非常灵活的处理多个元素的操作,但是其效率却比较低。ndarray数组相比于Python中的list列表具有以下特点: ndarray数组中所有元素的数据类型是相同的,数据地址是连续的,批量操作数组元素时速度更快;list列表中元素的数据类型可以不同,需要通过寻址方式找到下一个元素

Java绘制正态分布统计图

房东的猫 提交于 2020-02-06 18:24:16
Java绘制正态分布统计图 1.正态分布 正态分布(Normal distribution),又名高斯分布(Gaussian distribution),它在数学等工程领域中使用较为频繁的一种概率分布,尤其在统计学上有着重大的影响力。统计后的正态曲线呈钟型(两边低,中间高),如下图所示(图片来源百度百家号http://baijiahao.baidu.com/): 2.生成正态分布数据并统计 在做开发的过程中,我们往往要模拟出一些正态分布的数据,统计后进行图表绘制。使用Java模拟正态分布是一件非常容易的事情,随机数类Random的nextGaussian方法提供。 nextGaussian方法返回一个随机double类型数据,我们可以用一个数据容器存储该方法生成的若干个随机数。这些随机数会以0为基准随机生成正态分布的double数值,这些数值的均值接近0。在下面的程序示例中,我们利用nextGaussian生成若干个随机数,然后进行分组统计,最后在控制台上输出统计图表。 控制台输出正态分布统计图 01. import java . util . ArrayList ; 02. import java . util . Comparator ; 03. import java . util . HashMap ; 04. import java . util . Map ; 05.

P1059 明明的随机数(C/C++)

隐身守侯 提交于 2020-02-06 16:42:51
传送门:P1059 明明的随机数 题目描述 明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。 输入格式 输入有两行,第1行为1个正整数,表示所生成的随机数的个数N 第2行有N个用空格隔开的正整数,为所产生的随机数。 输出格式 输出也是两行,第1行为1个正整数M,表示不相同的随机数的个数。 第2行为M个用空格隔开的正整数,为从小到大排好序的不相同的随机数。 输入输出样例 输入 10 20 40 32 67 40 20 89 300 400 15 输出 8 15 20 32 40 67 89 300 400 题解一: 其实这题用STL中的set(集合)做是再简单不过了 set,顾名思义,就是数学上的集合——每个元素最多只出现一次,并且set中的元素已经从小到大排好序。 头文件:#include < set > 常用操作 : begin()    返回set容器的第一个元素的 地址 end()      返回set容器的最后一个元素 地址 clear()    删除set容器中的所有的元素 empty()