鱼C论坛

 找回密码
 立即注册
查看: 7553|回复: 26

[技术交流] 顺序与随机,range and random。

[复制链接]
发表于 2014-10-25 22:00:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 wei_Y 于 2014-10-25 22:11 编辑

学了一下range和random和大家分享一下。


1.range翻译过来是范围,现在表示的是一定范围的数字。
本来的函数是range([start,] stop[, step]) start是开始,stop是停下,step是步长。
1.1  普通用法
只有一个参数。
  1. list(range(7)
复制代码

360截图20141025204043753.jpg

直接用来生成一个序列。会生成0-6不会包括7,因为python是从0开始记得。

两个参数。
  1. list(range(1,7))
复制代码


360截图20141025204411984.jpg
与上面基本一样。限定了范围。
三个参数。
  1. list(range(1,7,3))
复制代码

360截图20141025204511470.jpg

是限定步长。1-6,3步一个。

也可以是负数的呦。
1.2 反序
有的时候需要反序一个但是加入list里在reversed也太麻烦了点。有什么方法呢?
第一种:  其实range本身也是个列表。直接reversed就可以啦。
360截图20141025205004141.jpg
第二种: 本身函数的默认的步长是1. so,直接range(7,1)是木有效果的。
360截图20141025205256803.jpg

不过我们可以修改步长。
360截图20141025205405507.jpg

需要注意的是必须有三个参数。


1.3 不能用小数,否则会报错。

2. 随机模块random。
一些概率问题和路线问题还是比较好用的。不过用的太多效率比较低。
导入模块
  1. import random
复制代码



2.1 random.random()
随机生成一个0-1的浮点数。

360截图20141025212404870.jpg

2.2random.uniform(7,9)
升级版,生成范围内的浮点数。
负数也可以哦。
360截图20141025212540870.jpg


2.3random.randint(7,9)
用的比较多,生成整数。求概率可以用这个方法来判断。

2.4random.randrange(7,19,2)
随机生成一个7-19中步长2的一个。

360截图20141025213014156.jpg

2.5random.choice(list(range(7,19,2)))
与上面的等效,用处是随机选择列表中的一个元素返回。
360截图20141025221128906.jpg
不过一般用作字符串。
360截图20141025221311434.jpg
当然列表里的东西都可以。。
数字的话到底那个效率比较高呢?应该差不多吧。


2.6random.shuffle(['Fish','C','.com'])
从名字就可以看出来'洗牌',自然是打乱顺序咯。

360截图20141025213639458.jpg

2.7random.sample(['Fish','C','.com'],2)
用于随机选择指定参数的元素。

360截图20141025214125703.jpg


3. 综合的用法还是要靠自己折腾折腾。
下面一个我折腾了好久出的。用的随机数。不过看大神用的range,而且效率高好多好多好多- -。
大家也做一下试试吧。

给你一个由元组组成的元组,其中第一个元组具有一个整数,每下一个元组具有一个比上一个元祖整数个数多一个。这个由元组组成的元组看起来像一个三角形。你需要写一个程序,来帮助史蒂芬在金字塔中找到最赚钱的路线下所收集到黄金的最大数量。下金字塔所有路线是向左下方或者向右下方。
输入: 金字塔作为一个由元组组成的元组。每个元组包含整数(int)。
输出: 能采集的最大黄金量作为整数(int)。

360截图20141025215204507.jpg

可以试试这个例子:

count_gold(((1,),(2,3),(3,3,1),(3,1,5,4),(3,1,3,1,3),(2,2,2,2,2,2),(5,6,4,5,6,4,3)))

我的:低效率随机数版。
  1. import random as r
  2. def count_gold(pyramid):
  3.       list1 = []
  4.       list2 = []
  5.       length = len(pyramid)
  6.       b = 0
  7.       for i in range(50000):            #总共来50000次随机
  8.               for j in range(length):      #每次都从头到底
  9.                       list2.append(pyramid[j][b])       #这里是走的路径。
  10.                       rint = r.randint(0,1)       #往下走的话随机。因为数足够大所以会有所有的结果。
  11.                       b += rint                       #不过这样也就低效率了。
  12.               if list2 not in list1:              #为了使列表不至于很大很大很大。
  13.                       list1.append(list2)      
  14.                       list2 = []                   #初始化
  15.                       b = 0
  16.               else:
  17.                       list2 = []                   #初始化
  18.                       b = 0
  19.       for t in range(len(list1)):     #求每条路线的总和。
  20.               list1[t] = sum(list1[t])
  21.       return max(list1)                #输出总和中的最大量。
复制代码


大神的:
游客,如果您要查看本帖隐藏内容请回复




想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-29 22:43:01 | 显示全部楼层
进步很大嘛!@wei_Y
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-10-30 09:04:42 | 显示全部楼层

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-30 09:34:45 | 显示全部楼层
受益良多啊,多谢楼主
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-10-31 10:26:24 | 显示全部楼层
谢谢分享~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-4 10:25:27 | 显示全部楼层
:lol::lol:学到不少
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-5 10:16:49 | 显示全部楼层
看看大神都写的什么内容,,不好理解啊。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-6 11:26:07 | 显示全部楼层
还好还好好好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-6 11:28:16 | 显示全部楼层
支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-6 11:29:05 | 显示全部楼层
支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-12-7 01:51:04 | 显示全部楼层
号高端
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-12-7 07:17:21 | 显示全部楼层
路过, 好东西!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-12-24 15:41:54 | 显示全部楼层
比c语言要人性化很多
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-12-24 16:02:16 | 显示全部楼层
学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-12-24 21:32:38 | 显示全部楼层
楼主啥编辑器???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-24 21:58:24 | 显示全部楼层
fengfengfeng 发表于 2014-12-24 21:32
楼主啥编辑器???

sublime text3
好看吧~。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-12-28 11:08:09 From FishC Mobile | 显示全部楼层
要看一下的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-15 21:25:06 | 显示全部楼层
学习,膜拜,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-22 14:12:36 | 显示全部楼层
新人来学习啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-10-22 17:19:40 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 06:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表