zoukankan      html  css  js  c++  java
  • Python中的random模块

    原博客网址:(1). http://www.cnblogs.com/yd1227/archive/2011/03/18/1988015.html

    (2). http://blog.csdn.net/qinglu000/article/details/46119621

    (1).random.random
    random.random()用于生成一个0到1的随机符点数: 0 <= n < 1.0
    
    (2).Python uniform() 函数
    uniform() 方法将随机生成下一个实数,它在 [x, y) 范围内.
    import random
    print "uniform(5, 10) 的随机数为 : ",  random.uniform(5, 10)
    print "uniform(7, 14) 的随机数为 : ",  random.uniform(7, 14)
    
    (3).random.randint
    random.randint()的函数原型为:random.randint(a, b),用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,生成的随机数n: a <= n <= b
    
    print random.randint(12, 20)  #生成的随机数n: 12 <= n <= 20  
    print random.randint(20, 20)  #结果永远是20  
    #print random.randint(20, 10)  #该语句是错误的。下限必须小于上限。  
    
    (4).random.randrange
    random.randrange的函数原型为:random.randrange([start], stop[, step]),从指定范围内,按指定基数递增的集合中 获取一个随机数。如:random.randrange(10, 100, 2),结果相当于从[10, 12, 14, 16, ... 96, 98]序列中获取一个随机数。random.randrange(10, 100, 2)在结果上与 random.choice(range(10, 100, 2) 等效.
    
    (5).random.choice
      random.choice从序列中获取一个随机元素。其函数原型为:random.choice(sequence)。参数sequence表示一个有序类型。这里要说明 一下:sequence在python不是一种特定的类型,而是泛指一系列的类型。list, tuple, 字符串都属于sequence。有关sequence可以查看python手册数据模型这一章。下面是使用choice的一些例子:
    print random.choice("学习Python")   
    print random.choice(["JGood", "is", "a", "handsome", "boy"])  
    print random.choice(("Tuple", "List", "Dict"))  
    
    (6).random.shuffle
      random.shuffle的函数原型为:random.shuffle(x[, random]),用于将一个列表中的元素打乱。如:
    p = ["Python", "is", "powerful", "simple", "and so on..."]  
    random.shuffle(p)  
    print p  
    #---- 结果(不同机器上的结果可能不一样。)  
    #['powerful', 'simple', 'is', 'Python', 'and so on...']  
    
    (7).random.sample
      random.sample的函数原型为:random.sample(sequence, k),从指定序列中随机获取指定长度的片断。sample函数不会修改原有序列。
    list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]  
    slice = random.sample(list, 5)  #从list中随机获取5个元素,作为一个片断返回  
    print slice  
    print list #原有序列并没有改变。  
    
    
    随机整数:
    >>> import random
    >>> random.randint(0,99)
    21
    
    随机选取0到100间的偶数:
    >>> import random
    >>> random.randrange(0, 101, 2)
    42
    
    随机浮点数:
    >>> import random
    >>> random.random() 
    0.85415370477785668
    >>> random.uniform(1, 10)
    5.4221167969800881
    
    随机字符:
    >>> import random
    >>> random.choice('abcdefg&#%^*f')
    'd'
    
    多个字符中选取特定数量的字符:
    >>> import random
    random.sample('abcdefghij',3) 
    ['a', 'd', 'b']
    
    多个字符中选取特定数量的字符组成新字符串:
    >>> import random
    >>> import string
    >>> string.join(random.sample(['a','b','c','d','e','f','g','h','i','j'], 3)).r
    eplace(" ","")
    'fih'
    
    随机选取字符串:
    >>> import random
    >>> random.choice ( ['apple', 'pear', 'peach', 'orange', 'lemon'] )
    'lemon'
    
    洗牌:
    >>> import random
    >>> items = [1, 2, 3, 4, 5, 6]
    >>> random.shuffle(items)
    >>> items
    [3, 2, 5, 6, 4, 1]
    
    

    seed()

    使用seed可以控制随机数的生成参考方法,以系统时间为对象可以产生随机性高的数,以同一个数为对象会产生同一个随机数

    Random初始化的时候,可以以一个INT32作为参数,称为seed,MSDN上的解释是:“伪随机数是以相同的概率从一组有限的数字中选取的......随机数的生成是从种子值开始......”
    跟c/C++类似,所有标准库提供的Random函数其实都是假Random,真正的Random函数式不需要Seed的。
    
    所谓假Random,是指所返回的随机数字其实是一个稳定算法所得出的稳定结果序列,而不是真正意义上的随机序列。 Seed就是这个算法开始计算的第一个值。所以就会出现只要seed是一样的,那么后续所有“随机”结果和顺序也都是完全一致的。 通常情况下,你可以用 DateTime.Now.Millisecend() 也就是当前始终的毫秒来做Seed .因为毫秒对你来说是一个1000以内的随即数字。 这样可以大大改善保准库的Random结果的随机性。 不过这仍然算不上是完全随机,因为重复的概率还是千分之一。
    
    另外需要注意的是,如果一直调用标准库Random,那么在调用了N次以后,输出结果就会循环最开始的序列了。也就是说,标准库Random所能生成的不同结果的个数也是有限的。32位系统一般也就是几万次以后就会出现重复。
    
    你可以到网上找一个真正的随即函数,以替换标准库Random。
    
    使用举例:random.seed(time.time())
    
    ###描述
    seed() 方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数。。
    ###语法
    ###以下是 seed(() 方法的语法:
    import random
    random.seed ( [x] )
    ###注意:seed()是不能直接访问的,需要导入 random 模块,然后通过 random 静态对象调用该方法。
    参数
    x -- 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。
    返回值
    本函数没有返回值。
    实例
    以下展示了使用 seed(() 方法的实例:
    #!/usr/bin/python
    import random
    
    random.seed( 10 )
    print "Random number with seed 10 : ", random.random()
    
    # 生成同一个随机数
    random.seed( 10 )
    print "Random number with seed 10 : ", random.random()
    
    # 生成同一个随机数
    random.seed( 10 )
    print "Random number with seed 10 : ", random.random()
    
    以上实例运行后输出结果为:
    Random number with seed 10 :  0.57140259469
    Random number with seed 10 :  0.57140259469
    Random number with seed 10 :  0.57140259469
    
  • 相关阅读:
    招聘面试—关于Mysql的一点儿总结
    情景linux—不曾了解的cat用法
    情景linux--shell如何实现多线程?
    情景linux--如何解决read命令产生的硬编码问题
    情景linux--如何优雅地退出telnet
    性能测试-概念篇-性能测试分类
    情景linux--如何摆脱深路径的频繁切换烦恼?
    TCP--telnet为何在127s后返回?
    你为什么必须(从现在开始就)掌握linux
    Cookie/Session机制详解
  • 原文地址:https://www.cnblogs.com/nyist-xsk/p/7571391.html
Copyright © 2011-2022 走看看