Python生成随机数组的方法小结

本文实例讲述了Python生成随机数组的方法。分享给大家供大家参考,具体如下:

研究排序问题的时候常常需要生成随机数组来验证自己排序算法的正确性和性能,今天把Python生成随机数组的方法稍作总结,以备以后查看使用。

一、使用random模块生成随机数组

python的random模块中有一些生成随机数字的方法,例如random.randint, random.random,
random.uniform,
random.randrange,这些函数大同小异,均是在返回指定范围内的一个整数或浮点数,下边简单解释一下这几个函数。

1、random.randint(low, hight) ->
返回一个位于[low,hight]之间的整数

该函数接受两个参数,这两个参数必须是整数(或者小数位是0的浮点数),并且第一个参数必须不大于第二个参数  
 

>>> import
random

>>>
random.randint(1,10)

5

>>>
random.randint(1.0, 10.0)

5



2、random.random() -> 不接受参数,返回一个[0.0,
1.0)之间的浮点数  
 

>>>
random.random()

0.9983625479554628



3、random.uniform(val1, val2) ->
接受两个数字参数,返回两个数字区间的一个浮点数,不要求val1小于等于val2  
 

>>>
random.uniform(1,5.0)

2.917249424176132

>>>
random.uniform(9.9, 2)

3.4288029275359024



*4、random.randrange(start, stop, step) ->
返回以start开始,stop结束,step为步长的列表中的随机整数,同样,三个参数均为整数(或者小数位为0),若start大于stop时
,setp必须为负数.step不能是0.*  
 

>>>
random.randrange(1, 100, 2) #返回[1,100]之间的奇数

95

>>>
random.randrange(100, 1, -2) #返回[100,1]之间的偶数

46

运行效果图如下:

5、生成随机数组

下边我们用random.randint来生成一个随机数组  
 

import random

def random_int_list(start, stop, length):

  start, stop = (int(start), int(stop)) if start
<= stop else (int(stop), int(start))

  length = int(abs(length)) if length else 0

  random_list = []

  for i in range(length):

   
random_list.append(random.randint(start, stop))

  return random_list



接下来我们就可以用这个函数来生成一个随机的整数序列了  
 

>>>
random_int_list(1,100,10)

[54, 13, 6, 89, 87, 39, 60, 2, 63, 61]

二、使用numpy.random模块来生成随机数组

1、np.random.rand 用于生成[0.0, 1.0)之间的随机浮点数,
当没有参数时,返回一个随机浮点数,当有一个参数时,返回该参数长度大小的一维随机浮点数数组,参数建议是整数型,因为未来版本的numpy可能不支持非整形参数。  
 

import numpy as np

>>>
np.random.rand(10)

array([ 0.56911206, 0.99777291, 0.18943144, 0.19387287,
0.75090637,

    0.18692814,
0.69804514, 0.48808425, 0.79440667, 0.66959075])



当然该函数还可以用于生成多维数组,这里不做详述。



2、np.random.randn该函数返回一个样本,具有标准正态分布。  
 

>>>
np.random.randn(10)

array([-1.6765704 , 0.66361856, 0.04029481, 1.19965741,
-0.57514593,

    -0.79603968,
1.52261545, -2.17401814, 0.86671727, -1.17945975])



3、np.random.randint(low[, high, size]) 返回随机的整数,位于半开区间 [low,
high)。    

>>>
np.random.randint(10,size=10)

array([4, 1, 4, 3, 8, 2, 8, 5, 8, 9])



4、random_integers(low[, high, size]) 返回随机的整数,位于闭区间 [low,
high]。    

>>>
np.random.random_integers(5)

4



5、np.random.shuffle(x)
类似洗牌,打乱顺序;np.random.permutation(x)返回一个随机排列  
 

>>> arr =
np.arange(10)

>>>
np.random.shuffle(arr)

>>> arr

[1 7 5 2 9 4 3 6 0 8]

>>>>
np.random.permutation(10)

array([1, 7, 4, 3, 0, 9, 2, 5, 8, 6])

Python生成随机数组的方法小结的更多相关文章

  1. numpy生成随机数组

    python想要生成随机数的话用使用random库很方便,不过如果想生成随机数组的话,还是用numpy更好更强大一点. 生成长度为10,在[0,1)之间平均分布的随机数组: rarray=numpy. ...

  2. Python 生成随机验证码

    Python生成随机验证码  Python生成随机验证码,需要使用PIL模块. 安装: 1 pip3 install pillow 基本使用 1. 创建图片 1 2 3 4 5 6 7 8 9 fro ...

  3. Python生成随机验证码

    Python生成随机验证码,需要使用PIL模块. 安装: pip3 install pillow 基本使用 1.创建图片 from PIL import Image img = Image.new(m ...

  4. python生成随机日期字符串

    python生成随机日期字符串 生成随机的日期字符串,用于插入数据库. 通过时间元组设定一个时间段,开始和结尾时间转换成时间戳. 时间戳中随机取一个,再生成时间元组,再把时间元组格式化输出为字符串 # ...

  5. Python生成随机字符串

    利用Python生成随机域名等随机字符串. #!/usr/bin/env python# -*- coding: utf-8 -*- from random import randrange, cho ...

  6. python生成随机整数

    python生成随机不重复的整数,用random中的sample index = random.sample(range(0,10),10) 上面是生成不重复的10个从1~10的整数 python生成 ...

  7. [三卷天书]记一个asp.net生成两个日期范围内生成随机时间的方法

    想网上找个生成随机天数的方法找不到,后面只得自己写了,贴给大家方便使用 思路:算两个日期的相差天数,然后在0到相差天数的范围内生成随机数,再用结束时间的天数部分减去这个随机数,代码: /// < ...

  8. PHP 生成随机数组

    /** 生成指定个数,以及最小最大值随机数组(包括最大值) * @parem $min 随机数组最小值 * @parem $max 随机数组最大值 * @parem $num 随机数组个数,默认max ...

  9. Java中生成随机字符的方法总结

    package learnExercise; public class RandomCharacter { public static char getRandomCharacter(char ch1 ...

随机推荐

  1. Python跨文件全局变量的使用

    尽管某些书籍上总是说避免使用全局变量,但是在实际的需求不断变化中,往往定义一个全局变量是最可靠的方法,但是又必须要避免变量名覆盖. Python 中 global 关键字可以定义一个变量为全局变量,但 ...

  2. Java锁--公平锁

    转载请注明出处:http://www.cnblogs.com/skywang12345/p/3496147.html 基本概念 本章,我们会讲解“线程获取公平锁”的原理:在讲解之前,需要了解几个基本概 ...

  3. office+visio2016版本一同安装说明

    安装所需软件: Office或者visio镜像 比如:cn_visio_professional_2016_x86_x64_dvd_6970929.iso 下载网址:http://pan.baidu. ...

  4. 2019牛客多校D move——乱搞&&思维题

    题意 给定 $n$ 个物品,体积分别为 $v_i$,现有 $K$ 的容积一样的箱子,按如下策略装入物品:每次选取尽可能大的装入(较大的不能装入时可以向小的找),依次装入箱子. 分析 首先,不具有严格的 ...

  5. [Functional Programming] liftA2 and converge

    Sometimes I am confused with 'liftA2' and 'converge' functions. Main difference between those is tha ...

  6. HDU 6134 Battlestation Operational | 2017 Multi-University Training Contest 8

    破结论没听说过,上式推导到第三步的时候有了O(nlogn) 的做法(枚举倍数+1最后前缀和),并且这种做法可以直接应用到向上取整的计算中,详见forever97 但由于d(n)是积性函数,故可O(n) ...

  7. [git]一个本地仓库,多个远程仓库

    操作步骤如下: 1. 克隆某个远程仓库的代码到本地 git clone http://...... // 或者 git clone git@.... 2. 查看当前远程仓库地址 // 查看需要添加的远 ...

  8. Activiti服务类- HistoryService服务类

    转自:https://www.cnblogs.com/liuqing576598117/p/11164027.html 一共个方法15个方法 用于查询历史工作流信息1.创建查询(7个方法)//创建一个 ...

  9. ACM之路(12)—— KMP & 扩展KMP & Manacher

    最近做完了kuangbin的一套关于kmp的题目(除了一道字典树的不会,因为还没学字典树所以先放放),做个总结.(kuangbin题目的链接:http://acm.hust.edu.cn/vjudge ...

  10. Maven依赖传递

    依赖传递原则: 1.路径最短原则 2.路径相同是先申明者优先(dependency申明顺序先的优先)