设为首页收藏本站

Crossin的编程教室

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

【每日一坑 1】 随机取数

  [复制链接]

0

主题

0

好友

14

积分

新手上路

Rank: 1

11#
发表于 2013-12-13 11:45:37 |只看该作者
本帖最后由 歪脑特 于 2013-12-13 11:53 编辑
  1. # Randomly pick m numbers from 1~n. 1<=m<=n.

  2. import random

  3. n = int(input("Input a value for n: "))
  4. m = int(input("Input a value for m: "))

  5. L = list(range(1,n))
  6. MList = []

  7. for i in range(m):
  8.     tmp = random.choice(L)
  9.     if tmp in MList:
  10.         tmp = random.choice(L)
  11.     MList.append(tmp)

  12. print(MList)
复制代码
回复

使用道具 举报

0

主题

0

好友

79

积分

注册会员

Rank: 2

12#
发表于 2013-12-13 11:47:04 |只看该作者
byron 发表于 2013-12-13 08:55
你这是C啊?

楼主没说一定要用Python啊。。。吱吱,还不会Python
回复

使用道具 举报

7

主题

1

好友

269

积分

中级会员

Rank: 3Rank: 3

13#
发表于 2013-12-13 13:35:41 |只看该作者
xuefu 发表于 2013-12-13 11:47
楼主没说一定要用Python啊。。。吱吱,还不会Python

嗯嗯,用C很厉害的。
回复

使用道具 举报

0

主题

0

好友

19

积分

新手上路

Rank: 1

14#
发表于 2013-12-13 15:32:16 |只看该作者
来填坑了~
def m(m, n):
    import random
    return [random.randint(1, n) for i in xrange(m)]
   
回复

使用道具 举报

1

主题

0

好友

120

积分

注册会员

Rank: 2

15#
发表于 2013-12-13 18:45:50 |只看该作者
  1. #coding:utf-8
  2. #从1到n 取m个数 1<=m<=n
  3. from random import randint

  4. print "---------------------------------"

  5. try:
  6.     n = input("Please input number of N > ")
  7. except NameError:
  8.     print "Please check your input, needs number only"
  9.     n = input("Please input number of N > ")
  10.    
  11. number_list = []
  12. for i in range(1,n+1):
  13.     number_list.append(i)
  14.    
  15. m = randint(1,n)
  16. print "Get",m,"number"
  17. get_number = []
  18. for i in range(0,m):
  19.     x = randint(1,n-1)
  20.     get_number.append(number_list[x])
  21.    
  22. print "\nDone\n"
  23. for i in get_number:
  24.     print i,
  25.    
  26. print "\n---------------------------------"
复制代码
回复

使用道具 举报

0

主题

0

好友

4

积分

新手上路

Rank: 1

16#
发表于 2013-12-13 20:35:40 |只看该作者
#从1到n取m个数,不重复
import random
print('请输入取数的范围1~n')
n=int(input())
print('请输入取数的个数')
m=int(input())


a=[]
for i in range(1,n+1):
    a.append(i)

print('These figures are:')
for i in range(1,m+1):
    character=random.choice(a)
    a.remove(character)
    print(character)
   
回复

使用道具 举报

0

主题

0

好友

134

积分

注册会员

Rank: 2

17#
发表于 2013-12-13 23:19:58 |只看该作者
  1. # -*- coding:utf-8 -*-
  2. from random import choice
  3. n=raw_input('Please input a number n:')
  4. m=raw_input('Please input a number m(1=<m<=n):')
  5. li=[]
  6. for i in range(1,int(n)+1):#将1到n个数放入列表
  7.     li.append(i)
  8. for j in range(0,int(m)):#m次提取随机数并输出
  9.     a=choice(li)
  10.     print a
  11.     p=li.index(a)
  12.     li.pop(p)
复制代码
想在raw_input里输入中文时又出现乱码了,求先生指教
回复

使用道具 举报

0

主题

0

好友

389

积分

中级会员

Rank: 3Rank: 3

18#
发表于 2013-12-15 00:35:49 |只看该作者
randomList.py
  1. #! /usr/bin/env python

  2. import sys
  3. import random

  4. if __name__ == "__main__":
  5.     if len(sys.argv) != 3:
  6.         print 'Error! please print like this : ./randomList.py 5 3'
  7.     else:
  8.         n = int(sys.argv[1])
  9.         m = int(sys.argv[2])
  10.         #print n,m
  11.         if m > n:
  12.             print 'Input error,the first number must large than or equal to the second number'
  13.         else:
  14.             originList = range(1,n+1)
  15.             for i in range(n - m):
  16.                 x = random.choice(originList)
  17.                 originList.remove(x)
  18.             else:
  19.                 print originList
复制代码
回复

使用道具 举报

0

主题

0

好友

49

积分

新手上路

Rank: 1

19#
发表于 2013-12-15 14:19:53 |只看该作者
  1. # -*- coding: utf-8 -*-
  2. #题目:从1~n中,随机取m个数。1<=m<=n

  3. import random

  4. def pick():
  5.         '''
  6.         Please make sure n, m are integers and 1 <= m <= n.
  7.         '''
  8.         try:
  9.                
  10.                 n = int(input('Give me a range of numbers: '))
  11.                 m = int(input('Tell me how many numbers that you want to pick: '))
  12.                 if 1 <= m <= n:
  13.                         print (sorted(random.sample([i for i in range(1, int(n)+1)], int (m))))
  14.                 else:
  15.                         print pick.__doc__

  16.         except:
  17.                 print pick.__doc__


  18. pick()
复制代码
借鉴了nodejx的random.sample用法
回复

使用道具 举报

0

主题

0

好友

6

积分

新手上路

Rank: 1

20#
发表于 2013-12-17 10:25:50 |只看该作者
本帖最后由 jox 于 2013-12-17 11:00 编辑

我试试,取出不重复的值
  1. import random

  2. def pick_M_from_N(n, m):

  3.   rawArr = range(1, n + 1)
  4.   resultArr = []

  5.   for i in range(0, m):
  6.     arrLength = len(rawArr)
  7.     pickedIndex = random.randint(0, arrLength - 1)
  8.     resultArr.append(rawArr[pickedIndex])
  9.     del rawArr[pickedIndex]
  10.    
  11.   return(resultArr)
  12.   
  13. if __name__ == "__main__":
  14.     print(pick_M_from_N(33, 6))
  15.     print(pick_M_from_N(16, 1))
复制代码
回复

使用道具 举报

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

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

GMT+8, 2024-4-26 00:30 , Processed in 0.028919 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部