设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: crossin先生
打印 上一主题 下一主题

【每日一坑 1】 随机取数

  [复制链接]

0

主题

0

好友

21

积分

新手上路

Rank: 1

21#
发表于 2013-12-17 20:17:47 |只看该作者
我用random.sample(range(1,n),m)
分别测试了100,1000。sorted(set(li))排序看结果
没发现重复啊,这个方法不会产生重复的吧?求解答
回复

使用道具 举报

0

主题

0

好友

49

积分

新手上路

Rank: 1

22#
发表于 2013-12-18 13:25:33 |只看该作者
阿聪 发表于 2013-12-17 20:17
我用random.sample(range(1,n),m)
分别测试了100,1000。sorted(set(li))排序看结果
没发现重复啊,这个方法 ...
random.sample(population, k)
Return a k length list of unique elements chosen from the population sequence. Used for random sampling without replacement.


引用官方文档,不会重复。
回复

使用道具 举报

0

主题

0

好友

21

积分

新手上路

Rank: 1

23#
发表于 2013-12-18 17:52:29 来自手机 |只看该作者
h01m3s 发表于 2013-12-18 13:25
引用官方文档,不会重复。

感谢!我原本以为只是从population 中随机抽样生成新序列。原来是不重复抽样
回复

使用道具 举报

0

主题

0

好友

16

积分

新手上路

Rank: 1

24#
发表于 2013-12-25 20:05:22 |只看该作者
  1. #coding:utf-8
  2. import random

  3. n = int(raw_input('输入最大数:'))
  4. print "你输入的最大的数是",n
  5. m = int(raw_input('输入随机出现多少个数(小于你的最大数)'))
  6. if m > n:
  7.         print "你输入的随机数的个数大于你输入的最大数,输入失败"
  8.         exit()

  9. list_n = []
  10. for a in range(1,n+1):
  11.         list_n.append(a)

  12. slice_m = random.sample(list_n,m)
  13. print slice_m
复制代码
回复

使用道具 举报

0

主题

0

好友

16

积分

新手上路

Rank: 1

25#
发表于 2013-12-25 20:14:31 |只看该作者
  1. def a():
  2.         m = int(raw_input('输入随机出现多少个数'))
复制代码
这样定义怎么不对呢?
我想这样用
  1. if m > n:
  2.         print "你输入的随机数的个数大于你输入的最大数,请重新输入"
  3.         a()
复制代码
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

26#
发表于 2013-12-26 10:47:17 |只看该作者
wshqxin 发表于 2013-12-25 20:14
这样定义怎么不对呢?
我想这样用

你是不是python3?3里面已经没有raw_input了
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

27#
发表于 2013-12-26 10:50:29 |只看该作者
wshqxin 发表于 2013-12-25 20:14
这样定义怎么不对呢?
我想这样用

你需要把完整代码和控制台的输出都发上来,才能看出哪里错了。
光是这两个代码片段,看不出来
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

84

积分

注册会员

Rank: 2

28#
发表于 2013-12-26 14:05:14 |只看该作者
冒个泡~

Screenshot_10.png (43.09 KB, 下载次数: 295)

Screenshot_10.png

回复

使用道具 举报

0

主题

0

好友

16

积分

新手上路

Rank: 1

29#
发表于 2013-12-26 19:35:59 |只看该作者
crossin先生 发表于 2013-12-26 10:50
你需要把完整代码和控制台的输出都发上来,才能看出哪里错了。
光是这两个代码片段,看不出来 ...
  1. #coding:utf-8
  2. import random

  3. n = int(raw_input('输入最大数:'))
  4. print "你输入的最大的数是",n

  5. def a():
  6.         m = int(raw_input('输入随机出现多少个数'))

  7. a()
  8. print m

  9. if m > n:
  10.         print "你输入的随机数的个数大于你输入的最大数,请重新输入"
  11.         a()

  12. list_n = []
  13. for a in range(1,n+1):
  14.         list_n.append(a)

  15. #print list_n
  16. slice_m = random.sample(list_n,m)
  17. print slice_m
复制代码
是这个。我想用if语句来控制一下,如果m>n,就重新输入m
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

30#
发表于 2013-12-26 22:24:55 |只看该作者
wshqxin 发表于 2013-12-26 19:35
是这个。我想用if语句来控制一下,如果m>n,就重新输入m

你不能在函数外面访问一个函数内部定义的变量,它们不是一个作用域的
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-4-19 17:38 , Processed in 0.021457 second(s), 25 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部