设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 96155|回复: 107
打印 上一主题 下一主题

【每日一坑 1】 随机取数

  [复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

跳转到指定楼层
楼主
发表于 2013-12-12 18:38:43 |只看该作者 |正序浏览
根据Byron同学的建议,尝试「每日一坑」:我出一道题目,一般是比较小的编程问题。大家自行练习。写完的请把答案发到论坛上“编程擂台”板块中。第二天(或者第n天),我会挑选答案反馈给大家。以此增加各位写代码的动力,多看多练。


今天来挖第一坑。题目很简单:
从1~n中,随机取m个数。1<=m<=n

写好这题,你可以拿它算出来的值去买双色球。。。

#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

4

积分

新手上路

Rank: 1

108#
发表于 2021-11-26 15:25:41 |只看该作者
import random

L0=[]

def randselec(m,n):
    if 1<=m<=n:
        L1=[i for i in range(1,n+1)]
        
        for i in range(m):
            num=random.choice(L1)
            L0.append(num)
            L1.remove(num)
        return sorted(L0)
   
    else:
        print('错误,请检查m n 是否满足1<=m<=n')

print(randselec(52,51))
回复

使用道具 举报

9

主题

2

好友

164

积分

注册会员

Rank: 2

107#
发表于 2021-7-21 18:56:16 |只看该作者
  1. import random;
  2. print(
  3.     random.sample(
  4.         range(
  5.             1,
  6.             int(
  7.                 input()
  8.             )
  9.         ),
  10.         int(
  11.             input()
  12.         )
  13.     )
  14. )
复制代码
回复

使用道具 举报

0

主题

1

好友

21

积分

新手上路

Rank: 1

106#
发表于 2021-7-6 21:02:35 |只看该作者
import random
def suiji(m,n):
    for i in range(1,m):#循环m次,随机获取m个随机数
        print(random.randint(1,n))#每次循环都输出

n=int(input("请输入最大数:"))
m=int(input("请输入随机数个数:"))
suiji(m,n)
回复

使用道具 举报

无效楼层,该帖已经被删除
无效楼层,该帖已经被删除

3

主题

1

好友

111

积分

注册会员

Rank: 2

103#
发表于 2021-2-11 15:13:33 |只看该作者
crossin先生 发表于 2021-2-11 15:01
判断一个字符串是正整数直接用 .isnumeric() 就可以了

set和列表类似,但是 无序、不重复(有重复的会被 ...

我原来还没听说过.isnumeric()呢,谢谢老师!
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

102#
发表于 2021-2-11 15:01:35 |只看该作者
FERRYMAN 发表于 2021-2-10 21:36
写了一下午和一晚上,总算把坑都给填完了

这个程序可以解决重复出现数字的问题

判断一个字符串是正整数直接用 .isnumeric() 就可以了

set和列表类似,但是 无序、不重复(有重复的会被自动合并掉)
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

3

主题

1

好友

111

积分

注册会员

Rank: 2

101#
发表于 2021-2-10 21:38:54 |只看该作者
FERRYMAN 发表于 2021-2-10 21:36
写了一下午和一晚上,总算把坑都给填完了

这个程序可以解决重复出现数字的问题

老师可以仔细讲讲“集合”这个东西吗?

写程序的时候用了set(),然后就被绕晕了
回复

使用道具 举报

3

主题

1

好友

111

积分

注册会员

Rank: 2

100#
发表于 2021-2-10 21:36:26 |只看该作者
写了一下午和一晚上,总算把坑都给填完了

这个程序可以解决重复出现数字的问题

希望老师能看看,更欢迎提出建议和意见

谢谢啦
  1. import random

  2. #从1~n中随机取m个数
  3. print('从1~n中随机取m个数')
  4. print('tips:m,n都必须为正整数且1≤m≤n')
  5. global m
  6. global n
  7. m = float(input('enter m:'))
  8. n = float(input('enter n:'))
  9. #此处暂时不转换为整数形式以防止输入内容不符合条件
  10. #下面这个while循环可以使m,n最终均为符合条件的值
  11. while (m<1) or (n<1) or (n<m) or (int(m % 1) is not 0) or (int(n % 1) is not 0):
  12.     print('注意!m,n都必须为正整数且1≤m≤n!')
  13.     m = float(input('enter m again:'))
  14.     n = float(input('enter n again:'))
  15.     if (1 <= m <= n) and (int(m % 1) is 0) and (int(n % 1) is 0):
  16.         break
  17. m = int(m)
  18. n = int(n)
  19. result_list = []
  20. for i in range(m):
  21.     result_list.append(random.randint(1, n))
  22. # print(result_list)
  23. #下面这个循环可以使结果中的数不重复
  24. while len(set(result_list)) < m:
  25.     daiti = []
  26.     for a in set(result_list):
  27.         daiti.append(a)
  28.     result_list = daiti
  29.     result_list.append(random.randint(1, n))
  30. print('\n结果为:')
  31. print(result_list)
复制代码
回复

使用道具 举报

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

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

GMT+8, 2024-5-3 08:03 , Processed in 0.021886 second(s), 27 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部