设为首页收藏本站

Crossin的编程教室

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

【每日一坑 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

好友

24

积分

新手上路

Rank: 1

沙发
发表于 2013-12-12 19:46:16 |只看该作者

回帖奖励 +5

  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. # Copyright 2013 nodejx

  4. import random
  5. #从1-n中取m个数字。
  6. def choice(n,m):
  7.         if 1 <= int(m) <= int(n):
  8.                 return sorted(random.sample([i for i in xrange(1,int(n)+1)], int(m)))
  9.         else:
  10.                 return "请确认 '1<=m<=n'!"
  11. #从1-1000随机取99个数字。
  12. print choice(1000,99)
复制代码
回复

使用道具 举报

7

主题

1

好友

269

积分

中级会员

Rank: 3Rank: 3

板凳
发表于 2013-12-12 20:36:58 |只看该作者

回帖奖励 +5

  1. #!/usr/bin/python
  2. #coding:utf-8
  3. #author:byron
  4. #blog:http://jiabin.tk

  5. import random
  6. def m_n():
  7.         print("本程序会从1~n中随机取m个数,1<=m<=n")
  8.         n = int(input("输入n的值:"))
  9.         m = int(input("输入m的值:"))
  10.         random_num = set()
  11.         if 1 <= m <= n:
  12.                 while len(random_num) != m:
  13.                         random_num.add(random.randint(1,n))
  14.                 print(random_num)
  15.         else:
  16.                 print("="*40)
  17.                 print('请确认1<=m<=n')
  18.                 print('='*40)
  19.                 m_n()
  20. m_n()
复制代码
回复

使用道具 举报

0

主题

0

好友

9

积分

新手上路

Rank: 1

地板
发表于 2013-12-12 23:27:25 |只看该作者
本帖最后由 judy 于 2013-12-12 23:29 编辑


import random
def tool():
    m=input("需要几个数:")
    n=input("最大值:")
    if 1 <= int(m) <= int(n):
        for i in range(m):
            num=random.randint(1,n)
            print num
    else:
        print"请确认最大值超过所需数字个数"
tool()
   
   
回复

使用道具 举报

0

主题

0

好友

389

积分

中级会员

Rank: 3Rank: 3

5#
发表于 2013-12-12 23:55:39 |只看该作者

回帖奖励 +5

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.             randomList = []
  16.             for i in range(m):
  17.                 x = random.randint(1,len(originList))      
  18.                 randomList.append(originList[x - 1])
  19.                 originList.remove(originList[x - 1])
  20.             else:
  21.                 randomList.sort()
  22.                 print randomList
复制代码
回复

使用道具 举报

0

主题

0

好友

79

积分

注册会员

Rank: 2

6#
发表于 2013-12-13 01:09:30 |只看该作者

回帖奖励 +5

本帖最后由 xuefu 于 2013-12-13 01:21 编辑
  1. #include <assert.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <time.h>

  5. int main(int argc, const char *argv[])
  6. {
  7.   int a, n, m, i = 0, j = 0;
  8.   int* secret;

  9.   printf("Input n: ");
  10.   scanf("%d", &n);

  11.   assert(n > 1 || n == 1);

  12.   printf("Input m: ");
  13.   scanf("%d", &m);

  14.   if(m > 0 && !(m > n))
  15.     printf("Below is the number: \n");
  16.   else
  17.   {
  18.     printf("the number m should be greater than zero and not larger than n.\n");
  19.     exit(0);
  20.   }

  21.   secret = malloc(sizeof(int) * m);
  22.   srand(time(NULL));

  23.   while(m--)
  24.   {
  25.     /* generate the number you want */
  26.     while(1)
  27.     {
  28.       a = rand() % n + 1;
  29.       /* check a whether is repeated */
  30.       for (j = 0; j < i; j++)
  31.       {
  32.         if (a == secret[j])
  33.         {
  34.           a = 0;
  35.           break;
  36.         }
  37.       }
  38.       if(a != 0)
  39.         break;
  40.     }
  41.     secret[i] = a;
  42.     printf("%d  ", secret[i++]);
  43.   }
  44.   printf("\n");

  45.   free(secret);
  46.   return 0;
  47. }
复制代码
回复

使用道具 举报

0

主题

0

好友

79

积分

注册会员

Rank: 2

7#
发表于 2013-12-13 01:11:25 |只看该作者
judy 发表于 2013-12-12 23:27
import random
def tool():
    m=input("需要几个数:")

明显得到的数可能会重复。。。
回复

使用道具 举报

7

主题

1

好友

269

积分

中级会员

Rank: 3Rank: 3

8#
发表于 2013-12-13 08:55:27 |只看该作者
xuefu 发表于 2013-12-13 01:11
明显得到的数可能会重复。。。

你这是C啊?
回复

使用道具 举报

0

主题

0

好友

66

积分

注册会员

Rank: 2

9#
发表于 2013-12-13 10:39:49 |只看该作者
本帖最后由 TongShan 于 2013-12-13 10:43 编辑
  1. import random

  2. def ball(n, m):
  3.     ball = random.sample(range(1, n+1), m)
  4.     ball.sort()
  5.     print ball
复制代码
回复

使用道具 举报

0

主题

0

好友

65

积分

注册会员

Rank: 2

10#
发表于 2013-12-13 11:18:34 |只看该作者
  1. import random

  2. def pick(n, m):
  3.     if 1<=m<=n:
  4.         resultnum = []
  5.         while(m > 0):
  6.             resultnum.append(random.randint(1,n))
  7.             m = m - 1
  8.         return (resultnum)
  9.     else:
  10.         print "Please make sure 1<=m<=n"

  11. if __name__ == "__main__":
  12.     n = int(input ("Please input a number n: "))
  13.     m = int(input ("Please input a number(Make sure 1<=m<=n) m: "))
  14.     print "Your result number is: " + str(pick(n, m))
复制代码
回复

使用道具 举报

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

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

GMT+8, 2024-11-21 22:45 , Processed in 0.028702 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部