最近找遍了python的各个函数发现无法直接生成随机的二维数组,其中包括random()相关的各种方法,都没有得到想要的结果。最后在一篇博客中受到启发,通过列表解析的方法得到随机的二维数组。
具体如下:
1
2
|
a = [[random.randint( 1 , 4 ) for j in range ( 1 , 3 )] for i in range ( 1 , 11 )] print (array(a)) |
其中random.randint(1, 4)用来产生一个随机整数。此时创建了一个10行2列的数组。
1
2
3
4
5
6
7
8
9
10
|
[[ 1 3 ] [ 1 2 ] [ 3 1 ] [ 1 2 ] [ 1 2 ] [ 3 3 ] [ 3 1 ] [ 1 3 ] [ 1 2 ] [ 3 3 ]] |
然后对random()中的各种方法做一个总结,具体如下:
1、choice()
从序列中获取一个随机元素
1
|
random.choice([ 'a' , 'b' , 'c' ]) |
结果为‘b'
2、randint()
用于生成一个指定范围内的整数,能取到边界的值
1
|
random.randint( 1 , 2 ) |
结果为‘1'
3、random()
用于生成一个0到1的随机符点数: 0 <= n < 1.0
1
|
random.random() |
结果为‘0.29892210378218154'
4、randrange()
从序列中获取一个随机数
1
|
random.randrange( 10 , 100 , 2 ) |
结果为‘68'
此时如果出现'module ‘numpy.random' has no attribute ‘randrange'
记得在开头加上import random
5、sample()
从指定序列中随机获取指定长度的片断,不改变原来序列顺序
1
2
|
list2 = [i * * 2 for i in range ( 0 , 10 )] print (random.sample(list2, 3 )) |
结果为‘[16, 9, 4]'
再看看list2有没有改变
结果为‘[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] '
没有改变,所以sample函数不会修改原有序列
6、shuffle()
将一个列表中的元素打乱
1
2
3
|
list1 = [ 1 , 2 , 3 , 4 , 5 , 6 ] random.shuffle(list1) print (list1) |
结果为‘[5, 3, 2, 1, 4, 6]'
7、uniform()
用于生成一个指定范围内的随机符点数
1
|
a = random.uniform( 2 , 3 ) |
结果为‘2.046090433068011'
以上这篇对python产生随机的二维数组实例详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/hyj0000/article/details/81449873